diff options
| author | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-03-26 16:28:39 +0100 |
|---|---|---|
| committer | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-05-28 10:28:14 +0200 |
| commit | 3318e8d33da061cabe5f9081b03a347b6f18670a (patch) | |
| tree | c1b5edb2d8760bbbc93e62edb0d721ab11f93c0c | |
| parent | 449948b4e4353a6b31057d1d5c806e1e0f1e4d7e (diff) | |
| download | mullvadvpn-3318e8d33da061cabe5f9081b03a347b6f18670a.tar.xz mullvadvpn-3318e8d33da061cabe5f9081b03a347b6f18670a.zip | |
Add a class to handle Main IPC and Daemon's AppUpgrade integration
| -rw-r--r-- | desktop/packages/mullvad-vpn/src/main/app-upgrade.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/src/main/app-upgrade.ts b/desktop/packages/mullvad-vpn/src/main/app-upgrade.ts new file mode 100644 index 0000000000..c4e2c3a2aa --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/main/app-upgrade.ts @@ -0,0 +1,37 @@ +import { DaemonAppUpgradeEvent } from '../shared/daemon-rpc-types'; +import log from '../shared/logging'; +import { DaemonRpc, SubscriptionListener } from './daemon-rpc'; +import { IpcMainEventChannel } from './ipc-event-channel'; + +export default class AppUpgrade { + public constructor(private daemonRpc: DaemonRpc) {} + + public registerIpcListeners() { + IpcMainEventChannel.app.handleUpgrade(() => { + this.daemonRpc.appUpgrade(); + }); + + IpcMainEventChannel.app.handleUpgradeAbort(() => { + this.daemonRpc.appUpgradeAbort(); + }); + } + + public subscribeEvents() { + const daemonAppUpgradeEventListener = new SubscriptionListener( + (appUpgradeEvent: DaemonAppUpgradeEvent) => { + if (appUpgradeEvent.type === 'APP_UPGRADE_ERROR') { + IpcMainEventChannel.app.notifyUpgradeError?.(appUpgradeEvent.error); + } else { + IpcMainEventChannel.app.notifyUpgradeEvent?.(appUpgradeEvent); + } + }, + (error: Error) => { + log.error(`Cannot deserialize the app upgrade event: ${error.message}`); + }, + ); + + this.daemonRpc.subscribeAppUpgradeEventListener(daemonAppUpgradeEventListener); + + return daemonAppUpgradeEventListener; + } +} |
