summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md3
-rw-r--r--gui/package-lock.json77
-rw-r--r--gui/package.json2
-rw-r--r--gui/src/main/index.ts28
-rw-r--r--gui/src/shared/ipc-event-channel.ts4
-rw-r--r--gui/test/setup/main.js3
6 files changed, 44 insertions, 73 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0e7f7d129a..9c69a42001 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,9 @@ Line wrap the file at 100 chars. Th
### Added
- Add shell completions for the mullvad CLI.
+### Changed
+- Downgrade to Electron 7 due to issues with tray icon in Electron 8.
+
### Fixed
#### Windows
- Improve offline detection logic.
diff --git a/gui/package-lock.json b/gui/package-lock.json
index 5a05bb60e2..c0b8207d11 100644
--- a/gui/package-lock.json
+++ b/gui/package-lock.json
@@ -86,9 +86,9 @@
}
},
"@electron/get": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.9.0.tgz",
- "integrity": "sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw==",
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.2.tgz",
+ "integrity": "sha512-LSE4LZGMjGS9TloDx0yO44D2UTbaeKRk+QjlhWLiQlikV6J4spgDCjb6z4YIcqmPAwNzlNCnWF4dubytwI+ATA==",
"dev": true,
"requires": {
"debug": "^4.1.1",
@@ -97,7 +97,6 @@
"global-agent": "^2.0.2",
"global-tunnel-ng": "^2.7.1",
"got": "^9.6.0",
- "progress": "^2.0.3",
"sanitize-filename": "^1.6.2",
"sumchecker": "^3.0.1"
},
@@ -1367,9 +1366,9 @@
"dev": true
},
"boolean": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz",
- "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.0.tgz",
+ "integrity": "sha512-OElxJ1lUSinuoUnkpOgLmxp0DC4ytEhODEL6QJU0NpxE/mI4rUSh8h1P1Wkvfi3xQEBcxXR2gBIPNYNuaFcAbQ==",
"dev": true,
"optional": true
},
@@ -2659,9 +2658,9 @@
"dev": true
},
"electron": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.0.tgz",
- "integrity": "sha512-mnV43gKCrCUMHLmGws/DU/l8LhaxrFD53A4ofwtthdCqOZWGIdk1+eMphiVumXR5a3lC64XVvmXQ2k28i7F/zw==",
+ "version": "7.1.10",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-7.1.10.tgz",
+ "integrity": "sha512-UDpS2CfBN3yufCrbET5Ozw1XrLhuANHn+Zs8Vgl/BcBT/MoNbkY79nRFcyxj6pCFrEde9IoNOf+DgNp6altNxw==",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@@ -2670,9 +2669,9 @@
},
"dependencies": {
"@types/node": {
- "version": "12.12.31",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.31.tgz",
- "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==",
+ "version": "12.12.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.25.tgz",
+ "integrity": "sha512-nf1LMGZvgFX186geVZR1xMZKKblJiRfiASTHw85zED2kI1yDKHDwTKMdkaCbTlXoRKlGKaDfYywt+V0As30q3w==",
"dev": true
}
}
@@ -4145,9 +4144,9 @@
},
"dependencies": {
"mkdirp": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
- "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
"minimist": "^1.2.5"
@@ -5200,25 +5199,25 @@
}
},
"global-agent": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.8.tgz",
- "integrity": "sha512-VpBe/rhY6Rw2VDOTszAMNambg+4Qv8j0yiTNDYEXXXxkUNGWLHp8A3ztK4YDBbFNcWF4rgsec6/5gPyryya/+A==",
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.7.tgz",
+ "integrity": "sha512-ooK7eqGYZku+LgnbfH/Iv0RJ74XfhrBZDlke1QSzcBt0bw1PmJcnRADPAQuFE+R45pKKDTynAr25SBasY2kvow==",
"dev": true,
"optional": true,
"requires": {
"boolean": "^3.0.0",
- "core-js": "^3.6.4",
+ "core-js": "^3.4.1",
"es6-error": "^4.1.1",
- "matcher": "^2.1.0",
- "roarr": "^2.15.2",
- "semver": "^7.1.2",
+ "matcher": "^2.0.0",
+ "roarr": "^2.14.5",
+ "semver": "^6.3.0",
"serialize-error": "^5.0.0"
},
"dependencies": {
"semver": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz",
- "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
"optional": true
}
@@ -7300,9 +7299,9 @@
}
},
"needle": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.3.tgz",
- "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz",
+ "integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==",
"optional": true,
"requires": {
"debug": "^3.2.6",
@@ -7417,9 +7416,9 @@
},
"dependencies": {
"mkdirp": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
- "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"optional": true,
"requires": {
"minimist": "^1.2.5"
@@ -8950,15 +8949,15 @@
}
},
"roarr": {
- "version": "2.15.2",
- "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.2.tgz",
- "integrity": "sha512-jmaDhK9CO4YbQAV8zzCnq9vjAqeO489MS5ehZ+rXmFiPFFE6B+S9KYO6prjmLJ5A0zY3QxVlQdrIya7E/azz/Q==",
+ "version": "2.14.6",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.14.6.tgz",
+ "integrity": "sha512-qjbw0BEesKA+3XFBPt+KVe1PC/Z6ShfJ4wPlx2XifqH5h2Lj8/KQT5XJTsy3n1Es5kai+BwKALaECW3F70B1cg==",
"dev": true,
"optional": true,
"requires": {
"boolean": "^3.0.0",
"detect-node": "^2.0.4",
- "globalthis": "^1.0.1",
+ "globalthis": "^1.0.0",
"json-stringify-safe": "^5.0.1",
"semver-compare": "^1.0.0",
"sprintf-js": "^1.1.2"
@@ -10131,9 +10130,9 @@
},
"dependencies": {
"mkdirp": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
- "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"optional": true,
"requires": {
"minimist": "^1.2.5"
diff --git a/gui/package.json b/gui/package.json
index 5247e3caec..de8e32bcd0 100644
--- a/gui/package.json
+++ b/gui/package.json
@@ -66,7 +66,7 @@
"chai-as-promised": "^7.1.1",
"chai-spies": "^1.0.0",
"cross-env": "^5.1.3",
- "electron": "^8.2.0",
+ "electron": "^7.1.10",
"electron-builder": "^21.2.0",
"electron-devtools-installer": "^2.2.1",
"electron-mocha": "^8.2.1",
diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts
index 6f9185688a..c0dd326429 100644
--- a/gui/src/main/index.ts
+++ b/gui/src/main/index.ts
@@ -4,7 +4,6 @@ import log from 'electron-log';
import mkdirp from 'mkdirp';
import moment from 'moment';
import * as path from 'path';
-import { sprintf } from 'sprintf-js';
import * as uuid from 'uuid';
import AccountExpiry from '../shared/account-expiry';
import BridgeSettingsBuilder from '../shared/bridge-settings-builder';
@@ -190,10 +189,6 @@ class ApplicationMain {
this.guiSettings.load();
- // The default value has previously been false but will be changed to true in Electron 9. The
- // false value has been deprecated in Electron 8. This can be removed when Electron 9 is used.
- app.allowRendererProcessReuse = true;
-
app.on('activate', this.onActivate);
app.on('ready', this.onReady);
app.on('window-all-closed', () => app.quit());
@@ -377,7 +372,6 @@ class ApplicationMain {
this.installGenericMenubarAppWindowHandlers(tray, windowController);
this.installLinuxWindowCloseHandler(windowController);
this.setLinuxAppMenu();
- this.setLinuxTrayMenu(tray, windowController);
window.setMenuBarVisibility(false);
break;
default:
@@ -1361,28 +1355,6 @@ class ApplicationMain {
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
}
- private setLinuxTrayMenu(tray: Tray, windowController: WindowController) {
- tray.setContextMenu(
- Menu.buildFromTemplate([
- {
- label: sprintf(
- // TRANSLATORS: The label displayed in the context menu that is opened when the user
- // TRANSLATORS: clicks the icon in the linux system tray/status bar.
- // TRANSLATORS: Available placeholder:
- // TRANSLATORS: %(appname) - Name of the app, i.e. Mullvad VPN
- messages.pgettext('status-icon-menu', 'Open %(appname)s'),
- {
- appname: app.getName(),
- },
- ),
- click: () => {
- windowController.show();
- },
- },
- ]),
- );
- }
-
private addContextMenu(window: BrowserWindow) {
const menuTemplate: Electron.MenuItemConstructorOptions[] = [
{ role: 'cut' },
diff --git a/gui/src/shared/ipc-event-channel.ts b/gui/src/shared/ipc-event-channel.ts
index b6e788e72e..c09b8d2a84 100644
--- a/gui/src/shared/ipc-event-channel.ts
+++ b/gui/src/shared/ipc-event-channel.ts
@@ -446,7 +446,7 @@ function handler<T>(event: string): (handlerFn: (value: T) => void) => void {
type RequestResult<T> = { type: 'success'; value: T } | { type: 'error'; message: string };
-// The Electron API uses the `any` type.
+// The Electron API uses the `any` type.
/* eslint-disable @typescript-eslint/no-explicit-any */
function requestHandler<T>(event: string): (fn: (...args: any[]) => Promise<T>) => void {
return (fn: (...args: any[]) => Promise<T>) => {
@@ -477,7 +477,7 @@ function requestHandler<T>(event: string): (fn: (...args: any[]) => Promise<T>)
}
/* eslint-enable @typescript-eslint/no-explicit-any */
-// The Electron API uses the `any` type.
+// The Electron API uses the `any` type.
/* eslint-disable @typescript-eslint/no-explicit-any */
function requestSender<T>(event: string): (...args: any[]) => Promise<T> {
return (...args: any[]): Promise<T> => {
diff --git a/gui/test/setup/main.js b/gui/test/setup/main.js
index 67e9293f9b..dd458a30b6 100644
--- a/gui/test/setup/main.js
+++ b/gui/test/setup/main.js
@@ -1,7 +1,4 @@
const log = require('electron-log');
-const { app } = require('electron');
log.transports.console.level = false;
log.transports.file.level = false;
-
-app.allowRendererProcessReuse = true;