diff options
author | V <vendicated@riseup.net> | 2023-04-15 02:26:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-15 02:26:46 +0200 |
commit | 6c719f5ee921d48eea671b026e6aff2c0c49e914 (patch) | |
tree | 9f694f67fbe0a32bb9721c6c52f19d0eefb055b4 /src/plugins/consoleShortcuts.ts | |
parent | c6fd8cae16d869fde0557504ac230991edb10385 (diff) | |
download | Vencord-6c719f5ee921d48eea671b026e6aff2c0c49e914.tar.gz Vencord-6c719f5ee921d48eea671b026e6aff2c0c49e914.tar.bz2 Vencord-6c719f5ee921d48eea671b026e6aff2c0c49e914.zip |
PinDMs (#879)
Diffstat (limited to 'src/plugins/consoleShortcuts.ts')
-rw-r--r-- | src/plugins/consoleShortcuts.ts | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/consoleShortcuts.ts b/src/plugins/consoleShortcuts.ts index 0489c2c..24ab740 100644 --- a/src/plugins/consoleShortcuts.ts +++ b/src/plugins/consoleShortcuts.ts @@ -21,7 +21,8 @@ import { relaunch } from "@utils/native"; import definePlugin from "@utils/types"; import * as Webpack from "@webpack"; import { extract, filters, findAll, search } from "@webpack"; -import { React } from "@webpack/common"; +import { React, ReactDOM } from "@webpack/common"; +import type { ComponentType } from "react"; const WEB_ONLY = (f: string) => () => { throw new Error(`'${f}' is Discord Desktop only.`); @@ -59,6 +60,7 @@ export default definePlugin({ }; } + let fakeRenderWin: WeakRef<Window> | undefined; return { wp: Vencord.Webpack, wpc: Webpack.wreq.c, @@ -79,7 +81,15 @@ export default definePlugin({ Settings: Vencord.Settings, Api: Vencord.Api, reload: () => location.reload(), - restart: IS_WEB ? WEB_ONLY("restart") : relaunch + restart: IS_WEB ? WEB_ONLY("restart") : relaunch, + fakeRender: (component: ComponentType, props: any) => { + const prevWin = fakeRenderWin?.deref(); + const win = prevWin?.closed === false ? prevWin : window.open("about:blank", "Fake Render", "popup,width=500,height=500")!; + fakeRenderWin = new WeakRef(win); + win.focus(); + + ReactDOM.render(React.createElement(component, props), win.document.body); + } }; }, |