From 9a2b02b0cada666996f80eca8e12b2a07cbe82d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garci=CC=81a?= Date: Mon, 8 Dec 2025 15:51:28 +0100 Subject: [PATCH] Electron 39 test --- apps/desktop/electron-builder.json | 2 +- apps/desktop/src/main/window.main.ts | 30 ++++++++++++++++++++++++++++ package-lock.json | 8 ++++---- package.json | 2 +- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/apps/desktop/electron-builder.json b/apps/desktop/electron-builder.json index 6e89799e9c4..f979df81fd0 100644 --- a/apps/desktop/electron-builder.json +++ b/apps/desktop/electron-builder.json @@ -20,7 +20,7 @@ "**/node_modules/@bitwarden/desktop-napi/index.js", "**/node_modules/@bitwarden/desktop-napi/desktop_napi.${platform}-${arch}*.node" ], - "electronVersion": "37.7.0", + "electronVersion": "39.2.6", "generateUpdatesFilesForAllChannels": true, "publish": { "provider": "generic", diff --git a/apps/desktop/src/main/window.main.ts b/apps/desktop/src/main/window.main.ts index bbdd2ad0a0f..798cc49613c 100644 --- a/apps/desktop/src/main/window.main.ts +++ b/apps/desktop/src/main/window.main.ts @@ -229,6 +229,8 @@ export class WindowMain { // TODO: REMOVE ONCE WE CAN STOP USING FAKE POP UP BTN FROM TRAY // Only used for development async loadUrl(targetPath: string, modal: boolean = false) { + this.logService.info(`Loading url: ${targetPath} in modal mode: ${modal}`); + if (this.win == null || this.win.isDestroyed()) { await this.createWindow("modal-app"); return; @@ -250,9 +252,37 @@ export class WindowMain { userAgent: cleanUserAgent(this.win.webContents.userAgent), }, ); + + let shownWindow = false; + this.win.once("ready-to-show", () => { + this.logService.info(`Url loaded: ${targetPath}. Showing window. ${shownWindow}`); + if (shownWindow) { + return; + } + shownWindow = true; this.win.show(); }); + + // The `ready-to-show` event doesn't always fire on wayland. + // Use the `did-finish-load` event on the web contents instead as that is similar enough + // https://github.com/electron/electron/issues/48859 + + if (process.env.ENABLE_LINUX_WORKAROUND === "1") { + this.logService.info( + `Using linux workaround to show window on did-finish-load event for url: ${targetPath}`, + ); + this.win.webContents.once("did-finish-load", () => { + this.logService.info( + `Using did-finish-load event to show ${targetPath} on linux. Showing window. ${shownWindow}`, + ); + if (shownWindow) { + return; + } + shownWindow = true; + this.win.show(); + }); + } } /** diff --git a/package-lock.json b/package-lock.json index 505c12b320c..77cbc13c0b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -131,7 +131,7 @@ "copy-webpack-plugin": "13.0.1", "cross-env": "10.1.0", "css-loader": "7.1.2", - "electron": "37.7.0", + "electron": "39.2.6", "electron-builder": "26.0.12", "electron-log": "5.4.3", "electron-reload": "2.0.0-alpha.1", @@ -20563,9 +20563,9 @@ } }, "node_modules/electron": { - "version": "37.7.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-37.7.0.tgz", - "integrity": "sha512-LBzvfrS0aalynOsnC11AD7zeoU8eOois090mzLpQM3K8yZ2N04i2ZW9qmHOTFLrXlKvrwRc7EbyQf1u8XHMl6Q==", + "version": "39.2.6", + "resolved": "https://registry.npmjs.org/electron/-/electron-39.2.6.tgz", + "integrity": "sha512-dHBgTodWBZd+tL1Dt0PSh/CFLHeDkFCTKCTXu1dgPhlE9Z3k2zzlBQ9B2oW55CFsKanBDHiUomHJNw0XaSdQpA==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index 94019fafea8..ccfc79dfd78 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "copy-webpack-plugin": "13.0.1", "cross-env": "10.1.0", "css-loader": "7.1.2", - "electron": "37.7.0", + "electron": "39.2.6", "electron-builder": "26.0.12", "electron-log": "5.4.3", "electron-reload": "2.0.0-alpha.1",