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 { 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 { KubeObjectContextMenuItem, KubeObjectOnContextMenuOpenContext, KubeObjectOnContextMenuOpen, KubeObjectHandlers, KubeObjectHandlerRegistration } from "../../renderer/kube-object/handler";
|
||||||
export type { TrayMenuRegistration } from "../../main/tray/tray-menu-registration";
|
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";
|
import type { LensMainExtensionDependencies } from "./lens-extension-set-dependencies";
|
||||||
|
|
||||||
export class LensMainExtension extends LensExtension<LensMainExtensionDependencies> {
|
export class LensMainExtension extends LensExtension<LensMainExtensionDependencies> {
|
||||||
appMenus: MenuRegistration[] = [];
|
appMenus: MenuRegistration[] | IComputedValue<MenuRegistration[]> = [];
|
||||||
trayMenus: TrayMenuRegistration[] | IComputedValue<TrayMenuRegistration[]> = [];
|
trayMenus: TrayMenuRegistration[] | IComputedValue<TrayMenuRegistration[]> = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
import { computed } from "mobx";
|
||||||
import type { Injectable } from "@ogre-tools/injectable";
|
import type { Injectable } from "@ogre-tools/injectable";
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { extensionRegistratorInjectionToken } from "../../../extensions/extension-loader/extension-registrator-injection-token";
|
import { extensionRegistratorInjectionToken } from "../../../extensions/extension-loader/extension-registrator-injection-token";
|
||||||
@ -25,11 +26,15 @@ const applicationMenuItemRegistratorInjectable = getInjectable({
|
|||||||
const toRecursedInjectables = toRecursedInjectablesFor(logError);
|
const toRecursedInjectables = toRecursedInjectablesFor(logError);
|
||||||
|
|
||||||
return (ext: LensExtension) => {
|
return (ext: LensExtension) => {
|
||||||
const extension = ext as LensMainExtension;
|
const mainExtension = ext as LensMainExtension;
|
||||||
|
|
||||||
return extension.appMenus.flatMap(
|
return computed(() => {
|
||||||
toRecursedInjectables([extension.sanitizedExtensionId]),
|
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.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import type { MenuItemConstructorOptions } from "electron";
|
import type { MenuItemConstructorOptions } from "electron";
|
||||||
|
import type { IComputedValue } from "mobx";
|
||||||
|
|
||||||
export interface MenuRegistration extends MenuItemConstructorOptions {
|
export type MenuRegistration = {
|
||||||
parentId: string;
|
parentId: string;
|
||||||
}
|
visible?: IComputedValue<boolean> | boolean;
|
||||||
|
} & Omit<MenuItemConstructorOptions, "visible">;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user