Fix vcDoubleClick, add support for stage channels (#158)
This commit is contained in:
		
							parent
							
								
									6c38362401
								
							
						
					
					
						commit
						559edbfffe
					
				
					 3 changed files with 28 additions and 14 deletions
				
			
		|  | @ -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: { | ||||
|  |  | |||
|  | @ -27,18 +27,29 @@ const timers = {} as Record<string, { | |||
| export default definePlugin({ | ||||
|     name: "vcDoubleClick", | ||||
|     description: "Join VCs via DoubleClick instead of single click", | ||||
|     authors: [Devs.Ven], | ||||
|     authors: [ | ||||
|         Devs.Ven, | ||||
|         Devs.D3SOX, | ||||
|     ], | ||||
|     patches: [ | ||||
|         { | ||||
|             find: "VoiceChannel.renderPopout", | ||||
|             replacement: { | ||||
|                 match: /onClick:function\(\)\{(e\.handleClick.+?)}/g, | ||||
|                 // hack: this is not a react onClick, it is a custom prop handled by Discord
 | ||||
|                 // thus, replacin 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
 | ||||
|                 replace: "onClick:function(){Vencord.Plugins.plugins.vcDoubleClick.schedule(()=>{$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
 | ||||
|  |  | |||
|  | @ -84,5 +84,9 @@ export const Devs = Object.freeze({ | |||
|     Nuckyz: { | ||||
|         name: "Nuckyz", | ||||
|         id: 235834946571337729n | ||||
|     }, | ||||
|     D3SOX: { | ||||
|         name: "D3SOX", | ||||
|         id: 201052085641281538n | ||||
|     } | ||||
| }); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue