From 559edbfffe4f694a0e89b9e41b72dd6a74b22f93 Mon Sep 17 00:00:00 2001 From: Nico Date: Tue, 25 Oct 2022 10:53:06 +0200 Subject: [PATCH] Fix vcDoubleClick, add support for stage channels (#158) --- src/plugins/showHiddenChannels.tsx | 6 ++---- src/plugins/vcDoubleClick.ts | 32 ++++++++++++++++++++---------- src/utils/constants.ts | 4 ++++ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/plugins/showHiddenChannels.tsx b/src/plugins/showHiddenChannels.tsx index 25a2b54..0650cc4 100644 --- a/src/plugins/showHiddenChannels.tsx +++ b/src/plugins/showHiddenChannels.tsx @@ -17,6 +17,7 @@ */ import { Flex } from "../components/Flex"; +import { Devs } from "../utils/constants"; import { ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "../utils/modal"; import definePlugin, { OptionType } from "../utils/types"; import { Settings } from "../Vencord"; @@ -41,10 +42,7 @@ export default definePlugin({ name: "Average React Enjoyer", id: 1004904120056029256n }, - { - name: "D3SOX", - id: 201052085641281538n - }, + Devs.D3SOX, ], options: { hideUnreads: { diff --git a/src/plugins/vcDoubleClick.ts b/src/plugins/vcDoubleClick.ts index f2a33a4..3600ac1 100644 --- a/src/plugins/vcDoubleClick.ts +++ b/src/plugins/vcDoubleClick.ts @@ -27,18 +27,29 @@ const timers = {} as Record{$1}, e)}", - }, + // hack: these are not React onClick, it is a custom prop handled by Discord + // thus, replacing this with onDoubleClick won't work, and you also cannot check + // e.detail since instead of the event they pass the channel. + // do this timer workaround instead + replacement: [ + // voice channels + { + match: /onClick:(.*)function\(\)\{(e\.handleClick.+?)}/g, + replace: "onClick:$1function(){Vencord.Plugins.plugins.vcDoubleClick.schedule(()=>{$2}, e)}", + }, + // stage channels + { + match: /onClick:(\w+)\?void 0:this\.handleClick,/g, + replace: "onClick:$1?void 0:(...args)=>Vencord.Plugins.plugins.vcDoubleClick.schedule(()=>{this.handleClick(...args);}, args[0]),", + } + ], }, { find: 'className:"channelMention",iconType:(', @@ -50,7 +61,8 @@ export default definePlugin({ ], schedule(cb: () => void, e: any) { - const id = e.props.channel.id as string; + // support from stage and voice channels patch + const id = e?.id ?? e.props.channel.id as string; // use a different counter for each channel const data = (timers[id] ??= { timeout: void 0, i: 0 }); // clear any existing timer diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 30c07ba..30cf4dc 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -84,5 +84,9 @@ export const Devs = Object.freeze({ Nuckyz: { name: "Nuckyz", id: 235834946571337729n + }, + D3SOX: { + name: "D3SOX", + id: 201052085641281538n } });