aboutsummaryrefslogtreecommitdiff
path: root/src/VencordNative.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/VencordNative.ts')
-rw-r--r--src/VencordNative.ts64
1 files changed, 38 insertions, 26 deletions
diff --git a/src/VencordNative.ts b/src/VencordNative.ts
index 3cd53e1..02de74f 100644
--- a/src/VencordNative.ts
+++ b/src/VencordNative.ts
@@ -16,34 +16,46 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import IPC_EVENTS from "@utils/IpcEvents";
-import { IpcRenderer, ipcRenderer } from "electron";
+import { IpcEvents } from "@utils/IpcEvents";
+import { IpcRes } from "@utils/types";
+import { ipcRenderer } from "electron";
-function assertEventAllowed(event: string) {
- if (!(event in IPC_EVENTS)) throw new Error(`Event ${event} not allowed.`);
+function invoke<T = any>(event: IpcEvents, ...args: any[]) {
+ return ipcRenderer.invoke(event, ...args) as Promise<T>;
}
+
+export function sendSync<T = any>(event: IpcEvents, ...args: any[]) {
+ return ipcRenderer.sendSync(event, ...args) as T;
+}
+
export default {
- getVersions: () => process.versions,
- ipc: {
- send(event: string, ...args: any[]) {
- assertEventAllowed(event);
- ipcRenderer.send(event, ...args);
- },
- sendSync<T = any>(event: string, ...args: any[]): T {
- assertEventAllowed(event);
- return ipcRenderer.sendSync(event, ...args);
- },
- on(event: string, listener: Parameters<IpcRenderer["on"]>[1]) {
- assertEventAllowed(event);
- ipcRenderer.on(event, listener);
- },
- off(event: string, listener: Parameters<IpcRenderer["off"]>[1]) {
- assertEventAllowed(event);
- ipcRenderer.off(event, listener);
+ updater: {
+ getUpdates: () => invoke<IpcRes<Record<"hash" | "author" | "message", string>[]>>(IpcEvents.GET_UPDATES),
+ update: () => invoke<IpcRes<boolean>>(IpcEvents.UPDATE),
+ rebuild: () => invoke<IpcRes<boolean>>(IpcEvents.BUILD),
+ getRepo: () => invoke<IpcRes<string>>(IpcEvents.GET_REPO),
+ },
+
+ settings: {
+ get: () => sendSync<string>(IpcEvents.GET_SETTINGS),
+ set: (settings: string) => invoke<void>(IpcEvents.SET_SETTINGS, settings),
+ getSettingsDir: () => invoke<string>(IpcEvents.GET_SETTINGS_DIR),
+ },
+
+ quickCss: {
+ get: () => invoke<string>(IpcEvents.GET_QUICK_CSS),
+ set: (css: string) => invoke<void>(IpcEvents.SET_QUICK_CSS, css),
+
+ addChangeListener(cb: (newCss: string) => void) {
+ ipcRenderer.on(IpcEvents.QUICK_CSS_UPDATE, (_, css) => cb(css));
},
- invoke<T = any>(event: string, ...args: any[]): Promise<T> {
- assertEventAllowed(event);
- return ipcRenderer.invoke(event, ...args);
- }
- }
+
+ openFile: () => invoke<void>(IpcEvents.OPEN_QUICKCSS),
+ openEditor: () => invoke<void>(IpcEvents.OPEN_MONACO_EDITOR),
+ },
+
+ native: {
+ getVersions: () => process.versions as Partial<NodeJS.ProcessVersions>,
+ openExternal: (url: string) => invoke<void>(IpcEvents.OPEN_EXTERNAL, url)
+ },
};