Skip to content

Commit e05262a

Browse files
committed
Return unsubscribe function when registering IPC listener in renderer
1 parent d284597 commit e05262a

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

gui/src/shared/ipc-helpers.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { capitalize } from './string-helpers';
66
type Handler<T, R> = (callback: (arg: T) => R) => void;
77
type Sender<T, R> = (arg: T) => R;
88
type Notifier<T> = ((arg: T) => void) | undefined;
9-
type Listener<T> = (callback: (arg: T) => void) => void;
9+
type Listener<T> = (callback: (arg: T) => void) => () => void;
1010

1111
interface MainToRenderer<T> {
1212
direction: 'main-to-renderer';
@@ -154,7 +154,9 @@ export function notifyRenderer<T>(): MainToRenderer<T> {
154154
direction: 'main-to-renderer',
155155
send: notifyRendererImpl,
156156
receive: (event, ipcRenderer) => (fn: (value: T) => void) => {
157-
ipcRenderer.on(event, (_event, newState: T) => fn(newState));
157+
const listener = (_event: unknown, newState: T) => fn(newState);
158+
ipcRenderer.on(event, listener);
159+
return () => ipcRenderer.off(event, listener);
158160
},
159161
};
160162
}

0 commit comments

Comments
 (0)