diff --git a/src/extensions/common-api/registrations.ts b/src/extensions/common-api/registrations.ts index 50a9262419..3592d7950e 100644 --- a/src/extensions/common-api/registrations.ts +++ b/src/extensions/common-api/registrations.ts @@ -14,3 +14,4 @@ export type { CustomCategoryViewProps, CustomCategoryViewComponents, CustomCateg export type { ShellEnvModifier, ShellEnvContext } from "../../main/shell-session/shell-env-modifier/shell-env-modifier-registration"; export type { KubeObjectContextMenuItem, KubeObjectOnContextMenuOpenContext, KubeObjectOnContextMenuOpen, KubeObjectHandlers, KubeObjectHandlerRegistration } from "../../renderer/kube-object/handler"; export type { TrayMenuRegistration } from "../../main/tray/tray-menu-registration"; +export type { MenuRegistration } from "../../features/application-menu/main/menu-registration"; diff --git a/src/extensions/lens-main-extension.ts b/src/extensions/lens-main-extension.ts index b97d8da834..63daab9ba4 100644 --- a/src/extensions/lens-main-extension.ts +++ b/src/extensions/lens-main-extension.ts @@ -12,7 +12,7 @@ import type { ShellEnvModifier } from "../main/shell-session/shell-env-modifier/ import type { LensMainExtensionDependencies } from "./lens-extension-set-dependencies"; export class LensMainExtension extends LensExtension { - appMenus: MenuRegistration[] = []; + appMenus: MenuRegistration[] | IComputedValue = []; trayMenus: TrayMenuRegistration[] | IComputedValue = []; /** diff --git a/src/features/application-menu/main/application-menu-item-registrator.injectable.ts b/src/features/application-menu/main/application-menu-item-registrator.injectable.ts index 8c3d635db0..b2e7367bbb 100644 --- a/src/features/application-menu/main/application-menu-item-registrator.injectable.ts +++ b/src/features/application-menu/main/application-menu-item-registrator.injectable.ts @@ -2,6 +2,7 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ +import { computed } from "mobx"; import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable"; import { extensionRegistratorInjectionToken } from "../../../extensions/extension-loader/extension-registrator-injection-token"; @@ -25,11 +26,15 @@ const applicationMenuItemRegistratorInjectable = getInjectable({ const toRecursedInjectables = toRecursedInjectablesFor(logError); return (ext: LensExtension) => { - const extension = ext as LensMainExtension; + const mainExtension = ext as LensMainExtension; - return extension.appMenus.flatMap( - toRecursedInjectables([extension.sanitizedExtensionId]), - ); + return computed(() => { + const appMenus = Array.isArray(mainExtension.appMenus) ? mainExtension.appMenus : mainExtension.appMenus.get(); + + return appMenus.flatMap( + toRecursedInjectables([mainExtension.sanitizedExtensionId]), + ); + }); }; }, diff --git a/src/features/application-menu/main/menu-registration.ts b/src/features/application-menu/main/menu-registration.ts index 8f0ba5933f..3dc75ba077 100644 --- a/src/features/application-menu/main/menu-registration.ts +++ b/src/features/application-menu/main/menu-registration.ts @@ -3,7 +3,9 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { MenuItemConstructorOptions } from "electron"; +import type { IComputedValue } from "mobx"; -export interface MenuRegistration extends MenuItemConstructorOptions { +export type MenuRegistration = { parentId: string; -} + visible?: IComputedValue | boolean; +} & Omit;