1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

futher review comments

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-04-01 11:25:49 -04:00
parent ae6660ca9c
commit 3cb288cd3b
3 changed files with 22 additions and 45 deletions

View File

@ -209,7 +209,6 @@
"@sentry/electron": "^3.0.6", "@sentry/electron": "^3.0.6",
"@sentry/integrations": "^6.19.3", "@sentry/integrations": "^6.19.3",
"@types/circular-dependency-plugin": "5.0.5", "@types/circular-dependency-plugin": "5.0.5",
"@types/data-urls": "^2.0.1",
"abort-controller": "^3.0.0", "abort-controller": "^3.0.0",
"auto-bind": "^4.0.0", "auto-bind": "^4.0.0",
"await-lock": "^2.1.0", "await-lock": "^2.1.0",

View File

@ -14,7 +14,7 @@ import type { WindowManager } from "../window-manager";
import logger from "../logger"; import logger from "../logger";
import { isWindows, productName } from "../../common/vars"; import { isWindows, productName } from "../../common/vars";
import { exitApp } from "../exit-app"; import { exitApp } from "../exit-app";
import { base64, getOrInsertWithAsync, toJS } from "../../common/utils"; import { base64, Disposer, disposer, getOrInsertWithAsync, toJS } from "../../common/utils";
import type { TrayMenuRegistration } from "./tray-menu-registration"; import type { TrayMenuRegistration } from "./tray-menu-registration";
import sharp from "sharp"; import sharp from "sharp";
import LogoLens from "../../renderer/components/icon/logo-lens.svg"; import LogoLens from "../../renderer/components/icon/logo-lens.svg";
@ -52,7 +52,7 @@ async function createTrayIcon({ shouldUseDarkColors, size, sourceSvg }: CreateTr
}); });
} }
function computeCurrentTrayIcon() { function createCurrentTrayIcon() {
return createTrayIcon({ return createTrayIcon({
shouldUseDarkColors: nativeTheme.shouldUseDarkColors, shouldUseDarkColors: nativeTheme.shouldUseDarkColors,
size: 16, size: 16,
@ -60,29 +60,34 @@ function computeCurrentTrayIcon() {
}); });
} }
function watchShouldUseDarkColors(tray: Tray) { function watchShouldUseDarkColors(tray: Tray): Disposer {
let prevShouldUseDarkColors = nativeTheme.shouldUseDarkColors; let prevShouldUseDarkColors = nativeTheme.shouldUseDarkColors;
const onUpdated = () => {
nativeTheme.on("updated", () => {
if (prevShouldUseDarkColors !== nativeTheme.shouldUseDarkColors) { if (prevShouldUseDarkColors !== nativeTheme.shouldUseDarkColors) {
prevShouldUseDarkColors = nativeTheme.shouldUseDarkColors; prevShouldUseDarkColors = nativeTheme.shouldUseDarkColors;
computeCurrentTrayIcon() createCurrentTrayIcon()
.then(img => tray.setImage(img)); .then(img => tray.setImage(img));
} }
}); };
nativeTheme.on("updated", onUpdated);
return () => nativeTheme.off("updated", onUpdated);
} }
export async function initTray( export async function initTray(
windowManager: WindowManager, windowManager: WindowManager,
trayMenuItems: IComputedValue<TrayMenuRegistration[]>, trayMenuItems: IComputedValue<TrayMenuRegistration[]>,
navigateToPreferences: () => void, navigateToPreferences: () => void,
) { ): Promise<Disposer> {
const icon = await computeCurrentTrayIcon(); const icon = await createCurrentTrayIcon();
const dispose = disposer();
tray = new Tray(icon); tray = new Tray(icon);
tray.setToolTip(packageInfo.description); tray.setToolTip(packageInfo.description);
tray.setIgnoreDoubleClickEvents(true); tray.setIgnoreDoubleClickEvents(true);
watchShouldUseDarkColors(tray);
dispose.push(watchShouldUseDarkColors(tray));
if (isWindows) { if (isWindows) {
tray.on("click", () => { tray.on("click", () => {
@ -92,7 +97,7 @@ export async function initTray(
}); });
} }
const disposers = [ dispose.push(
autorun(() => { autorun(() => {
try { try {
const menu = createTrayMenu(windowManager, toJS(trayMenuItems.get()), navigateToPreferences); const menu = createTrayMenu(windowManager, toJS(trayMenuItems.get()), navigateToPreferences);
@ -102,13 +107,13 @@ export async function initTray(
logger.error(`${TRAY_LOG_PREFIX}: building failed`, { error }); logger.error(`${TRAY_LOG_PREFIX}: building failed`, { error });
} }
}), }),
]; () => {
tray?.destroy();
tray = null;
},
);
return () => { return dispose;
disposers.forEach(disposer => disposer());
tray?.destroy();
tray = null;
};
} }
function getMenuItemConstructorOptions(trayItem: TrayMenuRegistration): Electron.MenuItemConstructorOptions { function getMenuItemConstructorOptions(trayItem: TrayMenuRegistration): Electron.MenuItemConstructorOptions {

View File

@ -1470,15 +1470,6 @@
resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-3.1.47.tgz#36e549dd3f1322742a3a738e7c113ebe48221860" resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-3.1.47.tgz#36e549dd3f1322742a3a738e7c113ebe48221860"
integrity sha512-eI6gvpcGHLk3dAuHYnRCAjX+41gMv1nz/VP55wAe5HtmAKDOoPSfr3f6vkMc08ov1S0NsjvUBxDtHHxqQY1LGA== integrity sha512-eI6gvpcGHLk3dAuHYnRCAjX+41gMv1nz/VP55wAe5HtmAKDOoPSfr3f6vkMc08ov1S0NsjvUBxDtHHxqQY1LGA==
"@types/data-urls@^2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/data-urls/-/data-urls-2.0.1.tgz#4a5491583513e8a84044f7e7fbac2ca246c44ed9"
integrity sha512-8/IGbezKc9SEeL9BHdZ4whS9EaYzXfQ6eEC2s34RXfnaEkTasKCWldq/gfoEzbByDD5GXyqEESogVRtdskJXEA==
dependencies:
"@types/node" "*"
"@types/whatwg-mimetype" "*"
"@types/whatwg-url" "*"
"@types/debug@^4.1.6": "@types/debug@^4.1.6":
version "4.1.7" version "4.1.7"
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
@ -2127,11 +2118,6 @@
resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1" resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1"
integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw== integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==
"@types/webidl-conversions@*":
version "6.1.1"
resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz#e33bc8ea812a01f63f90481c666334844b12a09e"
integrity sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==
"@types/webpack-dev-server@^4.7.2": "@types/webpack-dev-server@^4.7.2":
version "4.7.2" version "4.7.2"
resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-4.7.2.tgz#a12d9881aa23cdd4cecbb2d31fa784a45c4967e0" resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-4.7.2.tgz#a12d9881aa23cdd4cecbb2d31fa784a45c4967e0"
@ -2182,19 +2168,6 @@
tapable "^2.2.0" tapable "^2.2.0"
webpack "^5" webpack "^5"
"@types/whatwg-mimetype@*":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@types/whatwg-mimetype/-/whatwg-mimetype-2.1.1.tgz#1b7b7aecaa3695209fd2f3a808dd5729973a52fa"
integrity sha512-ojnf89qt5AWnqsjyPqMLN8uVaxm5x23vxNQ1me6EPBOdJe1YYuIZUzg809MZUG8UU6HKhkr6ah4fi2WUvD0DFw==
"@types/whatwg-url@*":
version "8.2.1"
resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.1.tgz#f1aac222dab7c59e011663a0cb0a3117b2ef05d4"
integrity sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==
dependencies:
"@types/node" "*"
"@types/webidl-conversions" "*"
"@types/ws@^6.0.1": "@types/ws@^6.0.1":
version "6.0.4" version "6.0.4"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-6.0.4.tgz#7797707c8acce8f76d8c34b370d4645b70421ff1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-6.0.4.tgz#7797707c8acce8f76d8c34b370d4645b70421ff1"