Files
Recordly/electron/preloadUpdateBridge.ts

54 lines
2.3 KiB
TypeScript

import type { IpcRenderer, IpcRendererEvent } from "electron";
export function createUpdateBridge(ipcRenderer: IpcRenderer) {
return {
installDownloadedUpdate: () => ipcRenderer.invoke("install-downloaded-update"),
downloadAvailableUpdate: () => ipcRenderer.invoke("download-available-update"),
deferDownloadedUpdate: (delayMs?: number) =>
ipcRenderer.invoke("defer-downloaded-update", delayMs),
dismissUpdateToast: () => ipcRenderer.invoke("dismiss-update-toast"),
skipUpdateVersion: () => ipcRenderer.invoke("skip-update-version"),
getCurrentUpdateToastPayload: () => ipcRenderer.invoke("get-current-update-toast-payload"),
getUpdateStatusSummary: () => ipcRenderer.invoke("get-update-status-summary"),
previewUpdateToast: () => ipcRenderer.invoke("preview-update-toast"),
checkForAppUpdates: () => ipcRenderer.invoke("check-for-app-updates"),
onUpdateToastStateChanged: (
callback: (payload: UpdateToastState | null) => void,
) => {
const listener = (_event: IpcRendererEvent, payload: UpdateToastState | null) =>
callback(payload);
ipcRenderer.on("update-toast-state", listener);
return () => ipcRenderer.removeListener("update-toast-state", listener);
},
onUpdateReadyToast: (
callback: (payload: {
version: string;
detail: string;
delayMs: number;
isPreview?: boolean;
}) => void,
) => {
const listener = (
_event: IpcRendererEvent,
payload: { version: string; detail: string; delayMs: number; isPreview?: boolean },
) => callback(payload);
ipcRenderer.on("update-ready-toast", listener);
return () => ipcRenderer.removeListener("update-ready-toast", listener);
},
onMenuLoadProject: (callback: () => void) => {
const listener = () => callback();
ipcRenderer.on("menu-load-project", listener);
return () => ipcRenderer.removeListener("menu-load-project", listener);
},
onMenuSaveProject: (callback: () => void) => {
const listener = () => callback();
ipcRenderer.on("menu-save-project", listener);
return () => ipcRenderer.removeListener("menu-save-project", listener);
},
onMenuSaveProjectAs: (callback: () => void) => {
const listener = () => callback();
ipcRenderer.on("menu-save-project-as", listener);
return () => ipcRenderer.removeListener("menu-save-project-as", listener);
},
};
}