Connect-Desk-Project/ui-preload.js

31 lines
1.6 KiB
JavaScript

// Bridge for the sidebar. The sidebar never touches Node directly.
const { contextBridge, ipcRenderer } = require("electron");
contextBridge.exposeInMainWorld("api", {
onState: (cb) => ipcRenderer.on("state", (_e, s) => cb(s)),
onError: (cb) => ipcRenderer.on("account:error", (_e, e) => cb(e)),
getState: () => ipcRenderer.invoke("get-state"),
activate: (id) => ipcRenderer.invoke("activate", id),
reload: (id) => ipcRenderer.invoke("reload", id),
addAccount: (instanceId) => ipcRenderer.invoke("add-account", instanceId),
removeAccount: (id) => ipcRenderer.invoke("remove-account", id),
renameAccount: (id, label) => ipcRenderer.invoke("rename-account", { id, label }),
setAccountInstance: (id, instanceId) =>
ipcRenderer.invoke("set-account-instance", { id, instanceId }),
focusAlert: (accountId) => ipcRenderer.invoke("focus-alert", accountId),
signIn: (id) => ipcRenderer.invoke("signin", id),
signOut: (id) => ipcRenderer.invoke("signout", id),
signInAll: () => ipcRenderer.invoke("signin-all"),
signOutAll: () => ipcRenderer.invoke("signout-all"),
credsList: () => ipcRenderer.invoke("creds:list"),
credsSave: (entries, opts) => ipcRenderer.invoke("creds:save", entries, opts),
setStatus: (id, kind) => ipcRenderer.invoke("set-status", { id, kind }),
setStatusAll: (kind) => ipcRenderer.invoke("set-status-all", kind),
onToast: (cb) => ipcRenderer.on("toast", (_e, t) => cb(t)),
onMenuAction: (cb) => ipcRenderer.on("menu:action", (_e, a) => cb(a)),
showAccountMenu: (id) => ipcRenderer.send("show-account-menu", id),
showInstanceMenu: () => ipcRenderer.invoke("show-instance-menu"),
});