mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Computed appMenus option (#6904)
* Make `appMenus` optionally `IComputedValue` similarly as `trayMenus` already are (#6598) * Allows extensions to dynamically show/hide menu items Signed-off-by: Sami Tiilikainen <97873007+samitiilikainen@users.noreply.github.com> Signed-off-by: Sami Tiilikainen <97873007+samitiilikainen@users.noreply.github.com>
This commit is contained in:
parent
8f9dd11420
commit
d2c5632fc1
@ -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";
|
||||
|
||||
@ -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<LensMainExtensionDependencies> {
|
||||
appMenus: MenuRegistration[] = [];
|
||||
appMenus: MenuRegistration[] | IComputedValue<MenuRegistration[]> = [];
|
||||
trayMenus: TrayMenuRegistration[] | IComputedValue<TrayMenuRegistration[]> = [];
|
||||
|
||||
/**
|
||||
|
||||
@ -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]),
|
||||
);
|
||||
});
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@ -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> | boolean;
|
||||
} & Omit<MenuItemConstructorOptions, "visible">;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user