Merge branch 'main' of https://github.com/Vendicated/Vencord
This commit is contained in:
commit
0567320fc6
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "vencord",
|
"name": "vencord",
|
||||||
"private": "true",
|
"private": "true",
|
||||||
"version": "1.10.2",
|
"version": "1.10.4",
|
||||||
"description": "The cutest Discord client mod",
|
"description": "The cutest Discord client mod",
|
||||||
"homepage": "https://github.com/Vendicated/Vencord#readme",
|
"homepage": "https://github.com/Vendicated/Vencord#readme",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|
|
@ -93,7 +93,7 @@ interface PluginCardProps extends React.HTMLProps<HTMLDivElement> {
|
||||||
export function PluginCard({ plugin, disabled, onRestartNeeded, onMouseEnter, onMouseLeave, isNew }: PluginCardProps) {
|
export function PluginCard({ plugin, disabled, onRestartNeeded, onMouseEnter, onMouseLeave, isNew }: PluginCardProps) {
|
||||||
const settings = Settings.plugins[plugin.name];
|
const settings = Settings.plugins[plugin.name];
|
||||||
|
|
||||||
const isEnabled = () => settings.enabled ?? false;
|
const isEnabled = () => Vencord.Plugins.isPluginEnabled(plugin.name);
|
||||||
|
|
||||||
function toggleEnabled() {
|
function toggleEnabled() {
|
||||||
const wasEnabled = isEnabled();
|
const wasEnabled = isEnabled();
|
||||||
|
|
|
@ -71,7 +71,7 @@ export default definePlugin({
|
||||||
description: "Anonymise uploaded file names",
|
description: "Anonymise uploaded file names",
|
||||||
patches: [
|
patches: [
|
||||||
{
|
{
|
||||||
find: "instantBatchUpload:function",
|
find: "instantBatchUpload:",
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /uploadFiles:(\i),/,
|
match: /uploadFiles:(\i),/,
|
||||||
replace:
|
replace:
|
||||||
|
|
|
@ -45,8 +45,8 @@ export default definePlugin({
|
||||||
{
|
{
|
||||||
find: ".embedWrapper,embed",
|
find: ".embedWrapper,embed",
|
||||||
replacement: [{
|
replacement: [{
|
||||||
match: /\.embedWrapper(?=.+?channel_id:(\i)\.id)/g,
|
match: /\.container/,
|
||||||
replace: "$&+($1.nsfw?' vc-nsfw-img':'')"
|
replace: "$&+(this.props.channel.nsfw? ' vc-nsfw-img': '')"
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -37,8 +37,8 @@ export default definePlugin({
|
||||||
find: 'type:"IDLE",idle:',
|
find: 'type:"IDLE",idle:',
|
||||||
replacement: [
|
replacement: [
|
||||||
{
|
{
|
||||||
match: /(?<=Date\.now\(\)-\i>)\i\.\i/,
|
match: /(?<=Date\.now\(\)-\i>)\i\.\i\|\|/,
|
||||||
replace: "$self.getIdleTimeout()"
|
replace: "$self.getIdleTimeout()||"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
match: /Math\.min\((\i\.\i\.getSetting\(\)\*\i\.\i\.\i\.SECOND),\i\.\i\)/,
|
match: /Math\.min\((\i\.\i\.getSetting\(\)\*\i\.\i\.\i\.SECOND),\i\.\i\)/,
|
||||||
|
|
|
@ -54,7 +54,7 @@ export default definePlugin({
|
||||||
replace: "$self.DecorationGridItem=$&"
|
replace: "$self.DecorationGridItem=$&"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
match: /(?<==)\i=>{let{user:\i,avatarDecoration.{300,600}decorationGridItemChurned/,
|
match: /(?<==)\i=>{let{user:\i,avatarDecoration/,
|
||||||
replace: "$self.DecorationGridDecoration=$&"
|
replace: "$self.DecorationGridDecoration=$&"
|
||||||
},
|
},
|
||||||
// Remove NEW label from decor avatar decorations
|
// Remove NEW label from decor avatar decorations
|
||||||
|
|
|
@ -22,7 +22,7 @@ import { Devs } from "@utils/constants";
|
||||||
import { ApngBlendOp, ApngDisposeOp, importApngJs } from "@utils/dependencies";
|
import { ApngBlendOp, ApngDisposeOp, importApngJs } from "@utils/dependencies";
|
||||||
import { getCurrentGuild } from "@utils/discord";
|
import { getCurrentGuild } from "@utils/discord";
|
||||||
import { Logger } from "@utils/Logger";
|
import { Logger } from "@utils/Logger";
|
||||||
import definePlugin, { OptionType } from "@utils/types";
|
import definePlugin, { OptionType, Patch } from "@utils/types";
|
||||||
import { findByCodeLazy, findByPropsLazy, findStoreLazy, proxyLazyWebpack } from "@webpack";
|
import { findByCodeLazy, findByPropsLazy, findStoreLazy, proxyLazyWebpack } from "@webpack";
|
||||||
import { Alerts, ChannelStore, DraftType, EmojiStore, FluxDispatcher, Forms, GuildMemberStore, IconUtils, lodash, Parser, PermissionsBits, PermissionStore, UploadHandler, UserSettingsActionCreators, UserStore } from "@webpack/common";
|
import { Alerts, ChannelStore, DraftType, EmojiStore, FluxDispatcher, Forms, GuildMemberStore, IconUtils, lodash, Parser, PermissionsBits, PermissionStore, UploadHandler, UserSettingsActionCreators, UserStore } from "@webpack/common";
|
||||||
import type { Emoji } from "@webpack/types";
|
import type { Emoji } from "@webpack/types";
|
||||||
|
@ -194,6 +194,26 @@ const hasExternalStickerPerms = (channelId: string) => hasPermission(channelId,
|
||||||
const hasEmbedPerms = (channelId: string) => hasPermission(channelId, PermissionsBits.EMBED_LINKS);
|
const hasEmbedPerms = (channelId: string) => hasPermission(channelId, PermissionsBits.EMBED_LINKS);
|
||||||
const hasAttachmentPerms = (channelId: string) => hasPermission(channelId, PermissionsBits.ATTACH_FILES);
|
const hasAttachmentPerms = (channelId: string) => hasPermission(channelId, PermissionsBits.ATTACH_FILES);
|
||||||
|
|
||||||
|
function makeBypassPatches(): Omit<Patch, "plugin"> {
|
||||||
|
const mapping: Array<{ func: string, predicate?: () => boolean; }> = [
|
||||||
|
{ func: "canUseCustomStickersEverywhere", predicate: () => settings.store.enableStickerBypass },
|
||||||
|
{ func: "canUseHighVideoUploadQuality", predicate: () => settings.store.enableStreamQualityBypass },
|
||||||
|
{ func: "canStreamQuality", predicate: () => settings.store.enableStreamQualityBypass },
|
||||||
|
{ func: "canUseClientThemes" },
|
||||||
|
{ func: "canUseCustomNotificationSounds" },
|
||||||
|
{ func: "canUsePremiumAppIcons" }
|
||||||
|
];
|
||||||
|
|
||||||
|
return {
|
||||||
|
find: "canUseCustomStickersEverywhere:",
|
||||||
|
replacement: mapping.map(({ func, predicate }) => ({
|
||||||
|
match: new RegExp(String.raw`(?<=${func}:function\(\i(?:,\i)?\){)`),
|
||||||
|
replace: "return true;",
|
||||||
|
predicate
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export default definePlugin({
|
export default definePlugin({
|
||||||
name: "FakeNitro",
|
name: "FakeNitro",
|
||||||
authors: [Devs.Arjix, Devs.D3SOX, Devs.Ven, Devs.fawn, Devs.captain, Devs.Nuckyz, Devs.AutumnVN],
|
authors: [Devs.Arjix, Devs.D3SOX, Devs.Ven, Devs.fawn, Devs.captain, Devs.Nuckyz, Devs.AutumnVN],
|
||||||
|
@ -203,6 +223,8 @@ export default definePlugin({
|
||||||
settings,
|
settings,
|
||||||
|
|
||||||
patches: [
|
patches: [
|
||||||
|
// General bypass patches
|
||||||
|
makeBypassPatches(),
|
||||||
// Patch the emoji picker in voice calls to not be bypassed by fake nitro
|
// Patch the emoji picker in voice calls to not be bypassed by fake nitro
|
||||||
{
|
{
|
||||||
find: "emojiItemDisabled]",
|
find: "emojiItemDisabled]",
|
||||||
|
@ -252,15 +274,6 @@ export default definePlugin({
|
||||||
replace: (_, rest1, rest2) => `${rest1},fakeNitroOriginal){if(!fakeNitroOriginal)return false;${rest2}`
|
replace: (_, rest1, rest2) => `${rest1},fakeNitroOriginal){if(!fakeNitroOriginal)return false;${rest2}`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Allow stickers to be sent everywhere
|
|
||||||
{
|
|
||||||
find: "canUseCustomStickersEverywhere:function",
|
|
||||||
predicate: () => settings.store.enableStickerBypass,
|
|
||||||
replacement: {
|
|
||||||
match: /canUseCustomStickersEverywhere:function\(\i\){/,
|
|
||||||
replace: "$&return true;"
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// Make stickers always available
|
// Make stickers always available
|
||||||
{
|
{
|
||||||
find: '"SENDABLE"',
|
find: '"SENDABLE"',
|
||||||
|
@ -270,20 +283,6 @@ export default definePlugin({
|
||||||
replace: "true?"
|
replace: "true?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Allow streaming with high quality
|
|
||||||
{
|
|
||||||
find: "canUseHighVideoUploadQuality:function",
|
|
||||||
predicate: () => settings.store.enableStreamQualityBypass,
|
|
||||||
replacement: [
|
|
||||||
"canUseHighVideoUploadQuality",
|
|
||||||
"canStreamQuality",
|
|
||||||
].map(func => {
|
|
||||||
return {
|
|
||||||
match: new RegExp(`${func}:function\\(\\i(?:,\\i)?\\){`, "g"),
|
|
||||||
replace: "$&return true;"
|
|
||||||
};
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// Remove boost requirements to stream with high quality
|
// Remove boost requirements to stream with high quality
|
||||||
{
|
{
|
||||||
find: "STREAM_FPS_OPTION.format",
|
find: "STREAM_FPS_OPTION.format",
|
||||||
|
@ -293,14 +292,6 @@ export default definePlugin({
|
||||||
replace: ""
|
replace: ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Allow client themes to be changeable
|
|
||||||
{
|
|
||||||
find: "canUseClientThemes:function",
|
|
||||||
replacement: {
|
|
||||||
match: /canUseClientThemes:function\(\i\){/,
|
|
||||||
replace: "$&return true;"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
find: '"UserSettingsProtoStore"',
|
find: '"UserSettingsProtoStore"',
|
||||||
replacement: [
|
replacement: [
|
||||||
|
@ -398,14 +389,6 @@ export default definePlugin({
|
||||||
replace: (_, reactNode, props) => `$self.addFakeNotice(${FakeNoticeType.Emoji},${reactNode},!!${props}?.fakeNitroNode?.fake)`
|
replace: (_, reactNode, props) => `$self.addFakeNotice(${FakeNoticeType.Emoji},${reactNode},!!${props}?.fakeNitroNode?.fake)`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Allow using custom app icons
|
|
||||||
{
|
|
||||||
find: "canUsePremiumAppIcons:function",
|
|
||||||
replacement: {
|
|
||||||
match: /canUsePremiumAppIcons:function\(\i\){/,
|
|
||||||
replace: "$&return true;"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// Separate patch for allowing using custom app icons
|
// Separate patch for allowing using custom app icons
|
||||||
{
|
{
|
||||||
find: /\.getCurrentDesktopIcon.{0,25}\.isPremium/,
|
find: /\.getCurrentDesktopIcon.{0,25}\.isPremium/,
|
||||||
|
@ -421,14 +404,6 @@ export default definePlugin({
|
||||||
match: /(?<=type:"(?:SOUNDBOARD_SOUNDS_RECEIVED|GUILD_SOUNDBOARD_SOUND_CREATE|GUILD_SOUNDBOARD_SOUND_UPDATE|GUILD_SOUNDBOARD_SOUNDS_UPDATE)".+?available:)\i\.available/g,
|
match: /(?<=type:"(?:SOUNDBOARD_SOUNDS_RECEIVED|GUILD_SOUNDBOARD_SOUND_CREATE|GUILD_SOUNDBOARD_SOUND_UPDATE|GUILD_SOUNDBOARD_SOUNDS_UPDATE)".+?available:)\i\.available/g,
|
||||||
replace: "true"
|
replace: "true"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
// Allow using custom notification sounds
|
|
||||||
{
|
|
||||||
find: "canUseCustomNotificationSounds:function",
|
|
||||||
replacement: {
|
|
||||||
match: /canUseCustomNotificationSounds:function\(\i\){/,
|
|
||||||
replace: "$&return true;"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -244,7 +244,7 @@ export default definePlugin({
|
||||||
|
|
||||||
patches: [
|
patches: [
|
||||||
{
|
{
|
||||||
find: '="LocalActivityStore",',
|
find: '"LocalActivityStore"',
|
||||||
replacement: [
|
replacement: [
|
||||||
{
|
{
|
||||||
match: /HANG_STATUS.+?(?=!\i\(\)\(\i,\i\)&&)(?<=(\i)\.push.+?)/,
|
match: /HANG_STATUS.+?(?=!\i\(\)\(\i,\i\)&&)(?<=(\i)\.push.+?)/,
|
||||||
|
@ -253,7 +253,7 @@ export default definePlugin({
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
find: '="ActivityTrackingStore",',
|
find: '"ActivityTrackingStore"',
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /getVisibleRunningGames\(\).+?;(?=for)(?<=(\i)=\i\.\i\.getVisibleRunningGames.+?)/,
|
match: /getVisibleRunningGames\(\).+?;(?=for)(?<=(\i)=\i\.\i\.getVisibleRunningGames.+?)/,
|
||||||
replace: (m, runningGames) => `${m}${runningGames}=${runningGames}.filter(({id,name})=>$self.isActivityNotIgnored({type:0,application_id:id,name}));`
|
replace: (m, runningGames) => `${m}${runningGames}=${runningGames}.filter(({id,name})=>$self.isActivityNotIgnored({type:0,application_id:id,name}));`
|
||||||
|
|
|
@ -249,8 +249,8 @@ export default definePlugin({
|
||||||
match: /user:\i,nick:\i,/,
|
match: /user:\i,nick:\i,/,
|
||||||
replace: "$&moreTags_channelId,"
|
replace: "$&moreTags_channelId,"
|
||||||
}, {
|
}, {
|
||||||
match: /,botType:(\i),(?<=user:(\i).+?)/g,
|
match: /,botType:(\i),botVerified:(\i),(?!discriminatorClass:)(?<=user:(\i).+?)/g,
|
||||||
replace: ",botType:$self.getTag({user:$2,channelId:moreTags_channelId,origType:$1,location:'not-chat'}),"
|
replace: ",botType:$self.getTag({user:$3,channelId:moreTags_channelId,origType:$1,location:'not-chat'}),botVerified:$2,"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -25,6 +25,12 @@ import { Message } from "discord-types/general";
|
||||||
|
|
||||||
const RelationshipStore = findByPropsLazy("getRelationships", "isBlocked");
|
const RelationshipStore = findByPropsLazy("getRelationships", "isBlocked");
|
||||||
|
|
||||||
|
interface MessageDeleteProps {
|
||||||
|
collapsedReason: {
|
||||||
|
message: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export default definePlugin({
|
export default definePlugin({
|
||||||
name: "NoBlockedMessages",
|
name: "NoBlockedMessages",
|
||||||
description: "Hides all blocked messages from chat completely.",
|
description: "Hides all blocked messages from chat completely.",
|
||||||
|
@ -35,13 +41,13 @@ export default definePlugin({
|
||||||
replacement: [
|
replacement: [
|
||||||
{
|
{
|
||||||
match: /let\{[^}]*collapsedReason[^}]*\}/,
|
match: /let\{[^}]*collapsedReason[^}]*\}/,
|
||||||
replace: "return null;$&"
|
replace: "if($self.shouldHide(arguments[0]))return null;$&"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
...[
|
...[
|
||||||
'="MessageStore",',
|
'"MessageStore"',
|
||||||
'"displayName","ReadStateStore")'
|
'"ReadStateStore"'
|
||||||
].map(find => ({
|
].map(find => ({
|
||||||
find,
|
find,
|
||||||
predicate: () => Settings.plugins.NoBlockedMessages.ignoreBlockedMessages === true,
|
predicate: () => Settings.plugins.NoBlockedMessages.ignoreBlockedMessages === true,
|
||||||
|
@ -68,5 +74,9 @@ export default definePlugin({
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
new Logger("NoBlockedMessages").error("Failed to check if user is blocked:", e);
|
new Logger("NoBlockedMessages").error("Failed to check if user is blocked:", e);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
shouldHide(props: MessageDeleteProps) {
|
||||||
|
return !props?.collapsedReason?.message.includes("deleted");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -74,7 +74,7 @@ export default definePlugin({
|
||||||
// This prevents the Message Requests tab from always hiding due to the previous patch (and is compatible with spam requests)
|
// This prevents the Message Requests tab from always hiding due to the previous patch (and is compatible with spam requests)
|
||||||
// In short, only the red badge is hidden. Button visibility behavior isn't changed.
|
// In short, only the red badge is hidden. Button visibility behavior isn't changed.
|
||||||
{
|
{
|
||||||
find: ".getSpamChannelsCount(),",
|
find: ".getSpamChannelsCount()",
|
||||||
predicate: () => settings.store.hideMessageRequestsCount,
|
predicate: () => settings.store.hideMessageRequestsCount,
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /(?<=getSpamChannelsCount\(\),\i=)\i\.getMessageRequestsCount\(\)/,
|
match: /(?<=getSpamChannelsCount\(\),\i=)\i\.getMessageRequestsCount\(\)/,
|
||||||
|
|
|
@ -172,7 +172,7 @@ export default definePlugin({
|
||||||
{
|
{
|
||||||
find: ".VIEW_ALL_ROLES,",
|
find: ".VIEW_ALL_ROLES,",
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /\.collapseButton,.+?}\)}\),/,
|
match: /\.expandButton,.+?null,/,
|
||||||
replace: "$&$self.ViewPermissionsButton(arguments[0]),"
|
replace: "$&$self.ViewPermissionsButton(arguments[0]),"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,8 +69,8 @@ export default definePlugin({
|
||||||
{
|
{
|
||||||
find: ".REPLY_QUOTE_MESSAGE_BLOCKED",
|
find: ".REPLY_QUOTE_MESSAGE_BLOCKED",
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /(?<="aria-label":\i,children:\[)(?=\i,\i,\i\])/,
|
match: /\.onClickReply,.+?}\),(?=\i,\i,\i\])/,
|
||||||
replace: "$self.ReplyTimestamp(arguments[0]),"
|
replace: "$&$self.ReplyTimestamp(arguments[0]),"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -444,7 +444,7 @@ export default definePlugin({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
find: '="GuildChannelStore",',
|
find: '"GuildChannelStore"',
|
||||||
replacement: [
|
replacement: [
|
||||||
{
|
{
|
||||||
// Make GuildChannelStore contain hidden channels
|
// Make GuildChannelStore contain hidden channels
|
||||||
|
@ -453,7 +453,7 @@ export default definePlugin({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Filter hidden channels from GuildChannelStore.getChannels unless told otherwise
|
// Filter hidden channels from GuildChannelStore.getChannels unless told otherwise
|
||||||
match: /(?<=getChannels\(\i)(\){.+?)return (.+?)}/,
|
match: /(?<=getChannels\(\i)(\){.*?)return (.+?)}/,
|
||||||
replace: (_, rest, channels) => `,shouldIncludeHidden${rest}return $self.resolveGuildChannels(${channels},shouldIncludeHidden??arguments[0]==="@favorites");}`
|
replace: (_, rest, channels) => `,shouldIncludeHidden${rest}return $self.resolveGuildChannels(${channels},shouldIncludeHidden??arguments[0]==="@favorites");}`
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -92,16 +92,7 @@ export default definePlugin({
|
||||||
replace: '">0"'
|
replace: '">0"'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// empty word filter (why would anyone search "horny" in fucking server discovery... please... why are we patching this again??)
|
// empty word filter
|
||||||
{
|
|
||||||
find: '"horny","fart"',
|
|
||||||
predicate: () => settings.store.disableDisallowedDiscoveryFilters,
|
|
||||||
replacement: {
|
|
||||||
match: /=\["egirl",.+?\]/,
|
|
||||||
replace: "=[]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// empty 2nd word filter
|
|
||||||
{
|
{
|
||||||
find: '"pepe","nude"',
|
find: '"pepe","nude"',
|
||||||
predicate: () => settings.store.disableDisallowedDiscoveryFilters,
|
predicate: () => settings.store.disableDisallowedDiscoveryFilters,
|
||||||
|
|
|
@ -48,7 +48,7 @@ export default definePlugin({
|
||||||
authors: [Devs.Rini, Devs.TheKodeToad],
|
authors: [Devs.Rini, Devs.TheKodeToad],
|
||||||
patches: [
|
patches: [
|
||||||
{
|
{
|
||||||
find: '?"@":"")',
|
find: '?"@":""',
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /(?<=onContextMenu:\i,children:).*?\)}/,
|
match: /(?<=onContextMenu:\i,children:).*?\)}/,
|
||||||
replace: "$self.renderUsername(arguments[0])}"
|
replace: "$self.renderUsername(arguments[0])}"
|
||||||
|
|
|
@ -21,7 +21,7 @@ const getDMChannelIcon = findByCodeLazy(".getChannelIconURL({");
|
||||||
const VoiceStateStore = findStoreLazy("VoiceStateStore");
|
const VoiceStateStore = findStoreLazy("VoiceStateStore");
|
||||||
|
|
||||||
const UserSummaryItem = findComponentByCodeLazy("defaultRenderUser", "showDefaultAvatarsForNullUsers");
|
const UserSummaryItem = findComponentByCodeLazy("defaultRenderUser", "showDefaultAvatarsForNullUsers");
|
||||||
const Avatar = findComponentByCodeLazy(".AVATAR_STATUS_TYPING_16;");
|
const Avatar = findComponentByCodeLazy(".status)/2):0");
|
||||||
const GroupDMAvatars = findComponentByCodeLazy(".AvatarSizeSpecs[", "getAvatarURL");
|
const GroupDMAvatars = findComponentByCodeLazy(".AvatarSizeSpecs[", "getAvatarURL");
|
||||||
|
|
||||||
const ActionButtonClasses = findByPropsLazy("actionButton", "highlight");
|
const ActionButtonClasses = findByPropsLazy("actionButton", "highlight");
|
||||||
|
|
|
@ -77,6 +77,11 @@ export default definePlugin({
|
||||||
match: /Math\.max.{0,30}\)\)/,
|
match: /Math\.max.{0,30}\)\)/,
|
||||||
replace: "arguments[0]"
|
replace: "arguments[0]"
|
||||||
},
|
},
|
||||||
|
// Fix streams not playing audio until you update them
|
||||||
|
{
|
||||||
|
match: /\}return"video"/,
|
||||||
|
replace: "this.updateAudioElement();$&"
|
||||||
|
},
|
||||||
// Patch the volume
|
// Patch the volume
|
||||||
{
|
{
|
||||||
match: /\.volume=this\._volume\/100;/,
|
match: /\.volume=this\._volume\/100;/,
|
||||||
|
@ -104,7 +109,7 @@ export default definePlugin({
|
||||||
},
|
},
|
||||||
// Prevent the MediaEngineStore from overwriting our LocalVolumes above 200 with the ones the Discord Audio Context Settings sync sends
|
// Prevent the MediaEngineStore from overwriting our LocalVolumes above 200 with the ones the Discord Audio Context Settings sync sends
|
||||||
{
|
{
|
||||||
find: '="MediaEngineStore",',
|
find: '"MediaEngineStore"',
|
||||||
replacement: [
|
replacement: [
|
||||||
{
|
{
|
||||||
match: /(\.settings\.audioContextSettings.+?)(\i\[\i\])=(\i\.volume)(.+?setLocalVolume\(\i,).+?\)/,
|
match: /(\.settings\.audioContextSettings.+?)(\i\[\i\])=(\i\.volume)(.+?setLocalVolume\(\i,).+?\)/,
|
||||||
|
|
|
@ -109,7 +109,8 @@ export default definePlugin({
|
||||||
match: /(\i)\?null:\(0,\i\.jsx\)\(\i\.\i,{className:\i\.reactionCount,.*?}\),/,
|
match: /(\i)\?null:\(0,\i\.jsx\)\(\i\.\i,{className:\i\.reactionCount,.*?}\),/,
|
||||||
replace: "$&$1?null:$self.renderUsers(this.props),"
|
replace: "$&$1?null:$self.renderUsers(this.props),"
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
find: '"MessageReactionsStore"',
|
find: '"MessageReactionsStore"',
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /(?<=CONNECTION_OPEN:function\(\){)(\i)={}/,
|
match: /(?<=CONNECTION_OPEN:function\(\){)(\i)={}/,
|
||||||
|
|
Loading…
Reference in a new issue