From 98cb301df53305f397ac6e1b4e603c930820f228 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Wed, 31 Aug 2022 04:07:16 +0200 Subject: Make Settings & Settings Page --- src/VencordNative.ts | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) (limited to 'src/VencordNative.ts') diff --git a/src/VencordNative.ts b/src/VencordNative.ts index 7fbe6df..fc1e690 100644 --- a/src/VencordNative.ts +++ b/src/VencordNative.ts @@ -1,12 +1,33 @@ -import { IPC_QUICK_CSS_UPDATE, IPC_GET_QUICK_CSS } from './utils/ipcEvents'; -import { ipcRenderer } from 'electron'; +import IPC_EVENTS from './utils/IpcEvents'; +import { IpcRenderer, ipcRenderer } from 'electron'; export default { - handleQuickCssUpdate(cb: (s: string) => void) { - ipcRenderer.on(IPC_QUICK_CSS_UPDATE, (_, css) => { - cb(css); - }); + getVersions: () => process.versions, + ipc: { + send(event: string, ...args: any[]) { + if (event in IPC_EVENTS) ipcRenderer.send(event, ...args); + else throw new Error(`Event ${event} not allowed.`); + }, + sendSync(event: string, ...args: any[]) { + if (event in IPC_EVENTS) return ipcRenderer.sendSync(event, ...args); + else throw new Error(`Event ${event} not allowed.`); + }, + on(event: string, listener: Parameters[1]) { + if (event in IPC_EVENTS) ipcRenderer.on(event, listener); + else throw new Error(`Event ${event} not allowed.`); + }, + invoke(event: string, ...args: any[]) { + if (event in IPC_EVENTS) return ipcRenderer.invoke(event, ...args); + else throw new Error(`Event ${event} not allowed.`); + } }, - getQuickCss: () => ipcRenderer.invoke(IPC_GET_QUICK_CSS) as Promise, - getVersions: () => process.versions + require(mod: string) { + const settings = ipcRenderer.sendSync(IPC_EVENTS.GET_SETTINGS); + try { + if (!JSON.parse(settings).unsafeRequire) throw "no"; + } catch { + throw new Error("Unsafe require is not allowed. Enable it in settings and try again."); + } + return require(mod); + } }; \ No newline at end of file -- cgit