2025-10-17 18:56:19 -06:00
|
|
|
import { contextBridge, ipcRenderer, IpcRendererEvent } from "electron";
|
2024-02-07 13:13:07 -06:00
|
|
|
|
|
|
|
|
const handler = {
|
|
|
|
|
send(channel: string, value: unknown) {
|
2025-10-17 18:56:19 -06:00
|
|
|
ipcRenderer.send(channel, value);
|
2024-02-07 13:13:07 -06:00
|
|
|
},
|
2025-10-17 18:56:19 -06:00
|
|
|
|
|
|
|
|
async invoke(channel: string, value: unknown) {
|
|
|
|
|
return ipcRenderer.invoke(channel, value);
|
|
|
|
|
},
|
|
|
|
|
|
2024-02-07 13:13:07 -06:00
|
|
|
on(channel: string, callback: (...args: unknown[]) => void) {
|
|
|
|
|
const subscription = (_event: IpcRendererEvent, ...args: unknown[]) =>
|
2025-10-17 18:56:19 -06:00
|
|
|
callback(...args);
|
|
|
|
|
ipcRenderer.on(channel, subscription);
|
2024-02-07 13:13:07 -06:00
|
|
|
|
|
|
|
|
return () => {
|
2025-10-17 18:56:19 -06:00
|
|
|
ipcRenderer.removeListener(channel, subscription);
|
|
|
|
|
};
|
2024-02-07 13:13:07 -06:00
|
|
|
},
|
2025-10-17 18:56:19 -06:00
|
|
|
};
|
2024-02-07 13:13:07 -06:00
|
|
|
|
2025-10-17 18:56:19 -06:00
|
|
|
contextBridge.exposeInMainWorld("ipc", handler);
|
2024-02-07 13:13:07 -06:00
|
|
|
|
2025-10-17 18:56:19 -06:00
|
|
|
export type IpcHandler = typeof handler;
|