mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix download percentages not updating in tray (#5697)
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
1 parent
666d90dd3c
commit
fa23b5cd3f
5 files changed
+66
-40
No files matched your search
@@ -9,15 +9,24 @@ import showApplicationWindowInjectable from "../../start-main-application/lens-w
|
||||
import isWindowsInjectable from "../../../common/vars/is-windows.injectable";
|
||||
import loggerInjectable from "../../../common/logger.injectable";
|
||||
import trayIconPathsInjectable from "../tray-icon-path.injectable";
|
||||
import type { TrayMenuItem } from "../tray-menu-item/tray-menu-item-injection-token";
|
||||
import { convertToElectronMenuTemplate } from "../reactive-tray-menu-items/converters";
|
||||
|
||||
const TRAY_LOG_PREFIX = "[TRAY]";
|
||||
|
||||
export interface MinimalTrayMenuItem {
|
||||
id: string;
|
||||
parentId: string | null;
|
||||
enabled: boolean;
|
||||
label?: string;
|
||||
click?: () => Promise<void> | void;
|
||||
tooltip?: string;
|
||||
separator?: boolean;
|
||||
}
|
||||
|
||||
export interface ElectronTray {
|
||||
start(): void;
|
||||
stop(): void;
|
||||
setMenuItems(menuItems: TrayMenuItem[]): void;
|
||||
setMenuItems(menuItems: MinimalTrayMenuItem[]): void;
|
||||
setIconPath(iconPath: string): void;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import type { TrayMenuItem } from "../tray-menu-item/tray-menu-item-injection-token";
|
||||
import type { MinimalTrayMenuItem } from "../electron-tray/electron-tray.injectable";
|
||||
|
||||
export function convertToElectronMenuTemplate(trayMenuItems: TrayMenuItem[]): Electron.MenuItemConstructorOptions[] {
|
||||
export function convertToElectronMenuTemplate(trayMenuItems: MinimalTrayMenuItem[]): Electron.MenuItemConstructorOptions[] {
|
||||
const toTrayMenuOptions = (parentId: string | null) => (
|
||||
trayMenuItems
|
||||
.filter((item) => item.parentId === parentId)
|
||||
.map((trayMenuItem: TrayMenuItem): Electron.MenuItemConstructorOptions => {
|
||||
.map((trayMenuItem): Electron.MenuItemConstructorOptions => {
|
||||
if (trayMenuItem.separator) {
|
||||
return { id: trayMenuItem.id, type: "separator" };
|
||||
}
|
||||
@@ -17,8 +17,8 @@ export function convertToElectronMenuTemplate(trayMenuItems: TrayMenuItem[]): El
|
||||
|
||||
return {
|
||||
id: trayMenuItem.id,
|
||||
label: trayMenuItem.label?.get(),
|
||||
enabled: trayMenuItem.enabled.get(),
|
||||
label: trayMenuItem.label,
|
||||
enabled: trayMenuItem.enabled,
|
||||
toolTip: trayMenuItem.tooltip,
|
||||
|
||||
...(childItems.length === 0
|
||||
|
||||
@@ -5,26 +5,40 @@
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { getStartableStoppable } from "../../../common/utils/get-startable-stoppable";
|
||||
import { reaction } from "mobx";
|
||||
import type { MinimalTrayMenuItem } from "../electron-tray/electron-tray.injectable";
|
||||
import electronTrayInjectable from "../electron-tray/electron-tray.injectable";
|
||||
import trayMenuItemsInjectable from "../tray-menu-item/tray-menu-items.injectable";
|
||||
import type { TrayMenuItem } from "../tray-menu-item/tray-menu-item-injection-token";
|
||||
|
||||
const reactiveTrayMenuItemsInjectable = getInjectable({
|
||||
id: "reactive-tray-menu-items",
|
||||
|
||||
instantiate: (di) => {
|
||||
const electronTray = di.inject(electronTrayInjectable);
|
||||
const trayMenuItems = di.inject(trayMenuItemsInjectable);
|
||||
const reactiveItems = di.inject(trayMenuItemsInjectable);
|
||||
|
||||
return getStartableStoppable("reactive-tray-menu-items", () => (
|
||||
return getStartableStoppable("reactive-tray-menu-items", () =>
|
||||
reaction(
|
||||
() => trayMenuItems.get(),
|
||||
electronTray.setMenuItems,
|
||||
(): MinimalTrayMenuItem[] => reactiveItems.get().map(toNonReactiveItem),
|
||||
|
||||
(nonReactiveItems) => electronTray.setMenuItems(nonReactiveItems),
|
||||
|
||||
{
|
||||
fireImmediately: true,
|
||||
},
|
||||
)
|
||||
));
|
||||
),
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
export default reactiveTrayMenuItemsInjectable;
|
||||
|
||||
const toNonReactiveItem = (item: TrayMenuItem): MinimalTrayMenuItem => ({
|
||||
id: item.id,
|
||||
parentId: item.parentId,
|
||||
click: item.click,
|
||||
tooltip: item.tooltip,
|
||||
separator: item.separator,
|
||||
enabled: item.enabled.get(),
|
||||
label: item.label?.get(),
|
||||
});
|
||||
Reference in new issue
Block a user