diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2024-03-19 11:09:08 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2024-03-20 11:02:30 +0100 |
| commit | e05262afd72101b46ee9a95fdbe6b76605091ea7 (patch) | |
| tree | 6899fb6b436bbd89dff3c4feacb7c2130d8b4236 | |
| parent | d2845979fe09a79d4ecf8597b2773463e2ebdc6a (diff) | |
| download | mullvadvpn-e05262afd72101b46ee9a95fdbe6b76605091ea7.tar.xz mullvadvpn-e05262afd72101b46ee9a95fdbe6b76605091ea7.zip | |
Return unsubscribe function when registering IPC listener in renderer
| -rw-r--r-- | gui/src/shared/ipc-helpers.ts | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gui/src/shared/ipc-helpers.ts b/gui/src/shared/ipc-helpers.ts index 27ad17e22a..0ff3ca2064 100644 --- a/gui/src/shared/ipc-helpers.ts +++ b/gui/src/shared/ipc-helpers.ts @@ -6,7 +6,7 @@ import { capitalize } from './string-helpers'; type Handler<T, R> = (callback: (arg: T) => R) => void; type Sender<T, R> = (arg: T) => R; type Notifier<T> = ((arg: T) => void) | undefined; -type Listener<T> = (callback: (arg: T) => void) => void; +type Listener<T> = (callback: (arg: T) => void) => () => void; interface MainToRenderer<T> { direction: 'main-to-renderer'; @@ -154,7 +154,9 @@ export function notifyRenderer<T>(): MainToRenderer<T> { direction: 'main-to-renderer', send: notifyRendererImpl, receive: (event, ipcRenderer) => (fn: (value: T) => void) => { - ipcRenderer.on(event, (_event, newState: T) => fn(newState)); + const listener = (_event: unknown, newState: T) => fn(newState); + ipcRenderer.on(event, listener); + return () => ipcRenderer.off(event, listener); }, }; } |
