diff --git a/electron/preload/index.ts b/electron/preload/index.ts index 3ddef8b5..4557646a 100644 --- a/electron/preload/index.ts +++ b/electron/preload/index.ts @@ -2,14 +2,13 @@ import { ipcRenderer, contextBridge } from 'electron' // --------- Expose some API to the Renderer process --------- contextBridge.exposeInMainWorld('ipcRenderer', { - on(...args: Parameters) { - const [channel, listener] = args - return ipcRenderer.on(channel, (event, ...args) => listener(event, ...args)) - }, - off(...args: Parameters) { - const [channel, ...omit] = args - return ipcRenderer.off(channel, ...omit) - }, + on(...args: Parameters) { + const [channel, listener] = args; + const listenerWrapper = (event: Electron.IpcRendererEvent, ...args: any[]) => + listener(event, ...args); + ipcRenderer.on(channel, listenerWrapper); + return () => ipcRenderer.off(channel, listenerWrapper); + }, send(...args: Parameters) { const [channel, ...omit] = args return ipcRenderer.send(channel, ...omit) @@ -115,4 +114,4 @@ window.onmessage = (ev) => { ev.data.payload === 'removeLoading' && removeLoading() } -setTimeout(removeLoading, 4999) \ No newline at end of file +setTimeout(removeLoading, 4999)