68 lines
2.4 KiB
TypeScript
68 lines
2.4 KiB
TypeScript
/*
|
|
* Vencord, a modification for Discord's desktop app
|
|
* Copyright (c) 2022
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
import { IpcEvents } from "@utils/IpcEvents";
|
|
import { IpcRes } from "@utils/types";
|
|
import { ipcRenderer } from "electron";
|
|
|
|
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 {
|
|
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));
|
|
},
|
|
|
|
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)
|
|
},
|
|
|
|
pluginHelpers: {
|
|
OpenInApp: {
|
|
resolveRedirect: (url: string) => invoke<string>(IpcEvents.OPEN_IN_APP__RESOLVE_REDIRECT, url),
|
|
},
|
|
}
|
|
};
|