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

Change TrayMenuRegistration not to leak or depend on Electron Menu API

Signed-off-by: Juho Heikka <juho.heikka@gmail.com>
This commit is contained in:
Juho Heikka 2021-12-31 12:49:39 +02:00
parent bb4790e3d8
commit 85714422af
2 changed files with 20 additions and 6 deletions

View File

@ -19,8 +19,12 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { MenuItemConstructorOptions } from "electron"; export interface TrayMenuRegistration {
label?: string;
export type TrayMenuRegistration = Pick<MenuItemConstructorOptions, click?: (menuItem: TrayMenuRegistration) => void;
"label" | "type" | "submenu" | "click" | id?: string;
"toolTip" | "visible" | "enabled" | "id">; type?: "normal" | "separator" | "submenu"
toolTip?: string;
enabled?: boolean;
submenu?: TrayMenuRegistration[]
}

View File

@ -83,6 +83,16 @@ export function initTray(
}; };
} }
function getMenuItemConstructorOptions(trayItem: TrayMenuRegistration): Electron.MenuItemConstructorOptions {
return {
...trayItem,
submenu: trayItem.submenu ? trayItem.submenu.map(getMenuItemConstructorOptions) : undefined,
click: trayItem.click ? () => {
trayItem.click(trayItem);
} : undefined,
};
}
function createTrayMenu( function createTrayMenu(
windowManager: WindowManager, windowManager: WindowManager,
extensionTrayItems: TrayMenuRegistration[], extensionTrayItems: TrayMenuRegistration[],
@ -116,7 +126,7 @@ function createTrayMenu(
}); });
} }
template = template.concat(extensionTrayItems); template = template.concat(extensionTrayItems.map(getMenuItemConstructorOptions));
return Menu.buildFromTemplate(template.concat([ return Menu.buildFromTemplate(template.concat([
{ {