From bed5e98bb03a2c7073f9f421a396fa7616d56ac5 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Sun, 5 Mar 2023 18:49:59 -0300 Subject: Misc fixes and improvements (#555) Co-authored-by: Ven --- src/plugins/fakeNitro.ts | 6 +++--- src/plugins/noScreensharePreview.ts | 6 +++--- .../components/HiddenChannelLockScreen.tsx | 18 ++++++++++++++---- src/plugins/showHiddenChannels/index.tsx | 13 ++++++++----- src/plugins/typingTweaks.tsx | 2 +- src/plugins/webhookTags.ts | 4 ++-- 6 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/plugins/fakeNitro.ts b/src/plugins/fakeNitro.ts index 22ffb80..a09a95a 100644 --- a/src/plugins/fakeNitro.ts +++ b/src/plugins/fakeNitro.ts @@ -87,11 +87,11 @@ export default definePlugin({ }, { match: /(?<=\.(?:canUseEmojisEverywhere|canUseAnimatedEmojis)\(\i)(?=\))/g, - replace: ",fakeNitroIntention" + replace: ',typeof fakeNitroIntention!=="undefined"?fakeNitroIntention:void 0' }, { match: /(?<=&&!\i&&)!(?\i)(?=\)return \i\.\i\.DISALLOW_EXTERNAL;)/, - replace: `(!$&&![${EmojiIntentions.CHAT},${EmojiIntentions.GUILD_STICKER_RELATED_EMOJI}].includes(fakeNitroIntention))` + replace: `(!$&&(typeof fakeNitroIntention==="undefined"||![${EmojiIntentions.CHAT},${EmojiIntentions.GUILD_STICKER_RELATED_EMOJI}].includes(fakeNitroIntention)))` } ] }, @@ -100,7 +100,7 @@ export default definePlugin({ predicate: () => Settings.plugins.FakeNitro.enableEmojiBypass === true, replacement: { match: /(?<=(?:canUseEmojisEverywhere|canUseAnimatedEmojis):function\((?\i))\){(?.+?\))/g, - replace: `,fakeNitroIntention){$||fakeNitroIntention===undefined||[${EmojiIntentions.CHAT},${EmojiIntentions.GUILD_STICKER_RELATED_EMOJI}].includes(fakeNitroIntention)` + replace: `,fakeNitroIntention){$||fakeNitroIntention==null||[${EmojiIntentions.CHAT},${EmojiIntentions.GUILD_STICKER_RELATED_EMOJI}].includes(fakeNitroIntention)` } }, { diff --git a/src/plugins/noScreensharePreview.ts b/src/plugins/noScreensharePreview.ts index 5641ea3..b09f206 100644 --- a/src/plugins/noScreensharePreview.ts +++ b/src/plugins/noScreensharePreview.ts @@ -27,10 +27,10 @@ export default definePlugin({ { find: '("ApplicationStreamPreviewUploadManager")', replacement: [ - ".\\.default\\.makeChunkedRequest\\(", - ".{1,2}\\..\\.post\\({url:" + "\\i\\.default\\.makeChunkedRequest\\(", + "\\i\\.\\i\\.post\\({url:" ].map(match => ({ - match: new RegExp(`return\\[(?\\d),${match}.\\..{1,3}\\.STREAM_PREVIEW.+?}\\)\\];`), + match: new RegExp(`return\\[(?\\d),${match}\\i\\.\\i\\.STREAM_PREVIEW.+?}\\)\\];`), replace: 'return[$,Promise.resolve({body:"",status:204})];' })) }, diff --git a/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx b/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx index 7e66a6a..01bc3a7 100644 --- a/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx +++ b/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx @@ -19,9 +19,11 @@ import ErrorBoundary from "@components/ErrorBoundary"; import { LazyComponent } from "@utils/misc"; import { formatDuration } from "@utils/text"; -import { find, findByCode, findByPropsLazy } from "@webpack"; +import { find, findByPropsLazy } from "@webpack"; import { FluxDispatcher, GuildMemberStore, GuildStore, moment, Parser, SnowflakeUtils, Text, Timestamp, Tooltip } from "@webpack/common"; import { Channel } from "discord-types/general"; +import type { ComponentType } from "react"; + enum SortOrderTypes { LATEST_ACTIVITY = 0, @@ -73,6 +75,17 @@ enum ChannelFlags { REQUIRE_TAG = 1 << 4 } +let EmojiComponent: ComponentType; +let ChannelBeginHeader: ComponentType; + +export function setEmojiComponent(component: ComponentType) { + EmojiComponent = component; +} + +export function setChannelBeginHeaderComponent(component: ComponentType) { + ChannelBeginHeader = component; +} + const ChatScrollClasses = findByPropsLazy("auto", "content", "scrollerBase"); const TagComponent = LazyComponent(() => find(m => { if (typeof m !== "function") return false; @@ -81,9 +94,6 @@ const TagComponent = LazyComponent(() => find(m => { // Get the component which doesn't include increasedActivity logic return code.includes(".Messages.FORUM_TAG_A11Y_FILTER_BY_TAG") && !code.includes("increasedActivityPill"); })); -const EmojiComponent = LazyComponent(() => findByCode('.jumboable?"jumbo":"default"')); -// The component for the beggining of a channel, but we patched it so it only returns the allowed users and roles components for hidden channels -const ChannelBeginHeader = LazyComponent(() => findByCode(".Messages.ROLE_REQUIRED_SINGLE_USER_MESSAGE")); const ChannelTypesToChannelNames = { [ChannelTypes.GUILD_TEXT]: "text", diff --git a/src/plugins/showHiddenChannels/index.tsx b/src/plugins/showHiddenChannels/index.tsx index fe14fe6..60e0c51 100644 --- a/src/plugins/showHiddenChannels/index.tsx +++ b/src/plugins/showHiddenChannels/index.tsx @@ -26,7 +26,7 @@ import { findByPropsLazy } from "@webpack"; import { ChannelStore, PermissionStore, Tooltip } from "@webpack/common"; import { Channel } from "discord-types/general"; -import HiddenChannelLockScreen from "./components/HiddenChannelLockScreen"; +import HiddenChannelLockScreen, { setChannelBeginHeaderComponent, setEmojiComponent } from "./components/HiddenChannelLockScreen"; const ChannelListClasses = findByPropsLazy("channelName", "subtitle", "modeMuted", "iconContainer"); @@ -239,8 +239,8 @@ export default definePlugin({ { find: 'jumboable?"jumbo":"default"', replacement: { - match: /(?<=\i:\(\)=>\i)(?=}.+?(?\i)=function.{1,20}node,\i=\i.isInteracting)/, - replace: ",hc1:()=>$" // Blame Ven length check for the small name :pensive_cry: + match: /(?<=(?\i)=function.{1,20}node,\i=\i.isInteracting.+?}}\)},)/, + replace: "shcEmojiComponentExport=($self.setEmojiComponent($),void 0)," } }, { @@ -248,8 +248,8 @@ export default definePlugin({ replacement: [ { // Export the channel beggining header - match: /(?<=\i:\(\)=>\i)(?=}.+?function (?\i).{1,600}computePermissionsForRoles)/, - replace: ",hc2:()=>$" + match: /(?<=function (?\i)\(.{1,600}computePermissionsForRoles.+?}\)})(?=var)/, + replace: "$self.setChannelBeginHeaderComponent($);" }, { // Patch the header to only return allowed users and roles if it's a hidden channel (Like when it's used on the HiddenChannelLockScreen) @@ -325,6 +325,9 @@ export default definePlugin({ } ], + setEmojiComponent, + setChannelBeginHeaderComponent, + isHiddenChannel(channel: Channel & { channelId?: string; }) { if (!channel) return false; diff --git a/src/plugins/typingTweaks.tsx b/src/plugins/typingTweaks.tsx index c3f8f87..3eb4fad 100644 --- a/src/plugins/typingTweaks.tsx +++ b/src/plugins/typingTweaks.tsx @@ -70,7 +70,7 @@ export default definePlugin({ { find: "getCooldownTextStyle", replacement: { - match: /return \i\.Z\.getName\(.,.\.props\.channel\.id,(.)\)/, + match: /return \i\.\i\.getName\(.,.\.props\.channel\.id,(.)\)/, replace: "return $1" } }, diff --git a/src/plugins/webhookTags.ts b/src/plugins/webhookTags.ts index 51d68fa..96cbf38 100644 --- a/src/plugins/webhookTags.ts +++ b/src/plugins/webhookTags.ts @@ -42,9 +42,9 @@ export default definePlugin({ { find: ".Types.ORIGINAL_POSTER", replacement: { - match: /return null==(.)\?null:\(0,.{1,3}\.jsxs?\)\((.{1,3})\.Z/, + match: /return null==(.)\?null:\(0,.{1,3}\.jsxs?\)\((.{1,3}\.\i)/, replace: (orig, type, BotTag) => - `if(arguments[0].message.webhookId&&arguments[0].user.isNonUserBot()){${type}=${BotTag}.Z.Types.WEBHOOK}${orig}`, + `if(arguments[0].message.webhookId&&arguments[0].user.isNonUserBot()){${type}=${BotTag}.Types.WEBHOOK}${orig}`, }, }, ], -- cgit