summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-03-26 16:28:39 +0100
committerTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-05-28 10:28:14 +0200
commit3318e8d33da061cabe5f9081b03a347b6f18670a (patch)
treec1b5edb2d8760bbbc93e62edb0d721ab11f93c0c
parent449948b4e4353a6b31057d1d5c806e1e0f1e4d7e (diff)
downloadmullvadvpn-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.ts37
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;
+ }
+}