diff --git a/src/plugins/copyEmojiMarkdown/index.tsx b/src/plugins/copyEmojiMarkdown/index.tsx index a9c018a91..58e7303a3 100644 --- a/src/plugins/copyEmojiMarkdown/index.tsx +++ b/src/plugins/copyEmojiMarkdown/index.tsx @@ -33,11 +33,11 @@ function getEmojiMarkdown(target: Target, copyUnicode: boolean): string { : `:${emojiName}:`; } - const extension = target?.firstChild.src.match( - /https:\/\/cdn\.discordapp\.com\/emojis\/\d+\.(\w+)/ - )?.[1]; + const url = new URL(target.firstChild.src); + const hasParam = url.searchParams.get("animated") === "true"; + const isGif = url.pathname.endsWith(".gif"); - return `<${extension === "gif" ? "a" : ""}:${emojiName.replace(/~\d+$/, "")}:${emojiId}>`; + return `<${(hasParam || isGif) ? "a" : ""}:${emojiName.replace(/~\d+$/, "")}:${emojiId}>`; } const settings = definePluginSettings({ @@ -55,7 +55,7 @@ export default definePlugin({ settings, contextMenus: { - "expression-picker"(children, { target }: { target: Target }) { + "expression-picker"(children, { target }: { target: Target; }) { if (target.dataset.type !== "emoji") return; children.push( diff --git a/src/webpack/common/components.ts b/src/webpack/common/components.ts index 66adcbe42..51b7e3061 100644 --- a/src/webpack/common/components.ts +++ b/src/webpack/common/components.ts @@ -57,7 +57,7 @@ export const Heading = waitForComponent("Heading", filters.componentB export const Select = waitForComponent("Select", filters.componentByCode('.selectPositionTop]:"top"===', '"Escape"===')); export const SearchableSelect = waitForComponent("SearchableSelect", filters.componentByCode('.selectPositionTop]:"top"===', ".multi]:")); export const Slider = waitForComponent("Slider", filters.componentByCode('"markDash".concat(')); -export const Popout = waitForComponent("Popout", filters.componentByCode("ref:this.ref,preload:")); +export const Popout = waitForComponent("Popout", filters.componentByCode("ref:this.ref,", "renderPopout:this.renderPopout,")); export const Dialog = waitForComponent("Dialog", filters.componentByCode('role:"dialog",tabIndex:-1')); export const TabBar = waitForComponent("TabBar", filters.componentByCode("ref:this.tabBarRef,className:")); export const Paginator = waitForComponent("Paginator", filters.componentByCode('rel:"prev",children:')); diff --git a/src/webpack/webpack.ts b/src/webpack/webpack.ts index 9e4ea3eb0..7ed791080 100644 --- a/src/webpack/webpack.ts +++ b/src/webpack/webpack.ts @@ -69,12 +69,12 @@ export const filters = { m.constructor?.displayName === name, componentByCode: (...code: CodeFilter): FilterFn => { - const filter = filters.byCode(...code); - return m => { + const byCodeFilter = filters.byCode(...code); + const filter = m => { let inner = m; while (inner != null) { - if (filter(inner)) return true; + if (byCodeFilter(inner)) return true; else if (!inner.$$typeof) return false; else if (inner.type) inner = inner.type; // memos else if (inner.render) inner = inner.render; // forwardRefs @@ -83,6 +83,9 @@ export const filters = { return false; }; + + filter.$$vencordProps = [...code]; + return filter; } };