From 2709edd9dda048af46d2cfce3aeed0d3e90cbe2f Mon Sep 17 00:00:00 2001 From: Juho Heikka Date: Thu, 1 Jun 2023 09:47:22 +0300 Subject: [PATCH] Add support for controlling entity settings visibility during runtime Signed-off-by: Juho Heikka --- .../entity-settings/extension-registrator.injectable.ts | 6 ++++++ .../general-settings.injectable.tsx | 2 ++ .../metrics-settings.injectable.tsx | 2 ++ .../namespace-settings.injectable.tsx | 2 ++ .../node-shell-settings.injectable.tsx | 2 ++ .../proxy-settings.injectable.tsx | 2 ++ .../terminal-settings.injectable.tsx | 2 ++ .../components/entity-settings/settings.injectable.ts | 1 + 8 files changed, 19 insertions(+) diff --git a/packages/core/src/renderer/components/entity-settings/extension-registrator.injectable.ts b/packages/core/src/renderer/components/entity-settings/extension-registrator.injectable.ts index 6acce2da09..8913ea9109 100644 --- a/packages/core/src/renderer/components/entity-settings/extension-registrator.injectable.ts +++ b/packages/core/src/renderer/components/entity-settings/extension-registrator.injectable.ts @@ -7,6 +7,8 @@ import { extensionRegistratorInjectionToken } from "../../../extensions/extensio import type { LensRendererExtension } from "../../../extensions/lens-renderer-extension"; import type { CatalogEntity } from "../../api/catalog-entity"; import { entitySettingInjectionToken } from "./token"; +import type { IComputedValue } from "mobx"; +import { computed } from "mobx"; export interface EntitySettingViewProps { entity: CatalogEntity; @@ -25,6 +27,7 @@ export interface EntitySettingRegistration { id?: string; priority?: number; group?: string; + visible?: IComputedValue; } export interface RegisteredEntitySetting { @@ -36,6 +39,7 @@ export interface RegisteredEntitySetting { components: EntitySettingComponents; source?: string; group: string; + isShown: IComputedValue; } const entitySettingExtensionRegistratorInjectable = getInjectable({ @@ -59,6 +63,7 @@ const getInjectableForEntitySettingRegistrationFor = (extension: LensRendererExt id = btoa(title), priority, source, + visible, }: EntitySettingRegistration) => getInjectable({ id: `${extension.manifest.name}:${group}/${kind}:${id}`, instantiate: () => ({ @@ -70,6 +75,7 @@ const getInjectableForEntitySettingRegistrationFor = (extension: LensRendererExt title, group, source, + isShown: computed(() => visible?.get() ?? true), }), injectionToken: entitySettingInjectionToken, }); diff --git a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/general-settings.injectable.tsx b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/general-settings.injectable.tsx index 64d4028f24..c16de94e4a 100644 --- a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/general-settings.injectable.tsx +++ b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/general-settings.injectable.tsx @@ -13,6 +13,7 @@ import { ClusterKubeconfig } from "../../cluster-settings/kubeconfig"; import { ClusterNameSetting } from "../../cluster-settings/name-setting"; import type { EntitySettingViewProps } from "../extension-registrator.injectable"; import { entitySettingInjectionToken } from "../token"; +import { computed } from "mobx"; interface Dependencies { getClusterById: GetClusterById; @@ -64,6 +65,7 @@ const generalKubernetesClusterEntitySettingsInjectable = getInjectable({ components: { View: GeneralKubernetesClusterSettings, }, + isShown: computed(() => true), }), injectionToken: entitySettingInjectionToken, }); diff --git a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/metrics-settings.injectable.tsx b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/metrics-settings.injectable.tsx index 0a860300a3..1a98a34379 100644 --- a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/metrics-settings.injectable.tsx +++ b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/metrics-settings.injectable.tsx @@ -12,6 +12,7 @@ import { ClusterPrometheusSetting } from "../../cluster-settings/prometheus-sett import { ShowMetricsSetting } from "../../cluster-settings/show-metrics"; import type { EntitySettingViewProps } from "../extension-registrator.injectable"; import { entitySettingInjectionToken } from "../token"; +import { computed } from "mobx"; interface Dependencies { getClusterById: GetClusterById; @@ -57,6 +58,7 @@ const metricsKubernetesClusterEntitySettingsInjectable = getInjectable({ components: { View: MetricsKubernetesClusterSettings, }, + isShown: computed(() => true), }), injectionToken: entitySettingInjectionToken, }); diff --git a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/namespace-settings.injectable.tsx b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/namespace-settings.injectable.tsx index c84827f2a7..5350c2f877 100644 --- a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/namespace-settings.injectable.tsx +++ b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/namespace-settings.injectable.tsx @@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo import { ClusterAccessibleNamespaces } from "../../cluster-settings/accessible-namespaces"; import type { EntitySettingViewProps } from "../extension-registrator.injectable"; import { entitySettingInjectionToken } from "../token"; +import { computed } from "mobx"; interface Dependencies { getClusterById: GetClusterById; @@ -48,6 +49,7 @@ const namespaceKubernetesClusterEntitySettingsInjectable = getInjectable({ components: { View: NamespaceKubernetesClusterSettings, }, + isShown: computed(() => true), }), injectionToken: entitySettingInjectionToken, }); diff --git a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/node-shell-settings.injectable.tsx b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/node-shell-settings.injectable.tsx index 1a1424b5b3..1ecc185585 100644 --- a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/node-shell-settings.injectable.tsx +++ b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/node-shell-settings.injectable.tsx @@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo import { ClusterNodeShellSetting } from "../../cluster-settings/node-shell-setting"; import type { EntitySettingViewProps } from "../extension-registrator.injectable"; import { entitySettingInjectionToken } from "../token"; +import { computed } from "mobx"; interface Dependencies { getClusterById: GetClusterById; @@ -48,6 +49,7 @@ const nodeShellKubernetesClusterEntitySettingsInjectable = getInjectable({ components: { View: NodeShellKubernetesClusterSettings, }, + isShown: computed(() => true), }), injectionToken: entitySettingInjectionToken, }); diff --git a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/proxy-settings.injectable.tsx b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/proxy-settings.injectable.tsx index 90b30ce7d2..c551f5e4b1 100644 --- a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/proxy-settings.injectable.tsx +++ b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/proxy-settings.injectable.tsx @@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo import { ClusterProxySetting } from "../../cluster-settings/proxy-setting"; import type { EntitySettingViewProps } from "../extension-registrator.injectable"; import { entitySettingInjectionToken } from "../token"; +import { computed } from "mobx"; interface Dependencies { getClusterById: GetClusterById; @@ -48,6 +49,7 @@ const proxyKubernetesClusterEntitySettingsInjectable = getInjectable({ components: { View: ProxyKubernetesClusterSettings, }, + isShown: computed(() => true), }), injectionToken: entitySettingInjectionToken, }); diff --git a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/terminal-settings.injectable.tsx b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/terminal-settings.injectable.tsx index 6448c935bc..aff5c969bb 100644 --- a/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/terminal-settings.injectable.tsx +++ b/packages/core/src/renderer/components/entity-settings/internal-kubernetes-cluster/terminal-settings.injectable.tsx @@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo import { ClusterLocalTerminalSetting } from "../../cluster-settings/local-terminal-settings"; import type { EntitySettingViewProps } from "../extension-registrator.injectable"; import { entitySettingInjectionToken } from "../token"; +import { computed } from "mobx"; interface Dependencies { getClusterById: GetClusterById; @@ -48,6 +49,7 @@ const terminalKubernetesClusterEntitySettingsInjectable = getInjectable({ components: { View: TerminalKubernetesClusterSettings, }, + isShown: computed(() => true), }), injectionToken: entitySettingInjectionToken, }); diff --git a/packages/core/src/renderer/components/entity-settings/settings.injectable.ts b/packages/core/src/renderer/components/entity-settings/settings.injectable.ts index c70063f2b6..d6eb605eda 100644 --- a/packages/core/src/renderer/components/entity-settings/settings.injectable.ts +++ b/packages/core/src/renderer/components/entity-settings/settings.injectable.ts @@ -21,6 +21,7 @@ const catalogEntitySettingItemsInjectable = getInjectable({ item.apiVersions.has(entity.apiVersion) && item.kind === entity.kind && (!item.source || item.source === entity.metadata.source) + && item.isShown.get() )) .sort(byOrderNumber) ));