From 447690f36d0a2653db16741ded60916785b31307 Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Thu, 4 Apr 2024 19:06:25 +0200 Subject: [PATCH] Hide Quotas from the menu if it's not supported --- frontend/src/components/routes.tsx | 10 +++++++--- frontend/src/state/supportedFeatures.ts | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/routes.tsx b/frontend/src/components/routes.tsx index 29f2d160e..ae7d276f7 100644 --- a/frontend/src/components/routes.tsx +++ b/frontend/src/components/routes.tsx @@ -26,7 +26,7 @@ import SchemaDetailsView from './pages/schemas/Schema.Details'; import AclList from './pages/acls/Acl.List'; import { HomeIcon, CogIcon, CollectionIcon, CubeTransparentIcon, FilterIcon, ShieldCheckIcon, LinkIcon, ScaleIcon, BeakerIcon } from '@heroicons/react/outline'; import ReassignPartitions from './pages/reassign-partitions/ReassignPartitions'; -import { Feature, FeatureEntry, isSupported } from '../state/supportedFeatures'; +import { Feature, FeatureEntry, isSupported, shouldHideIfNotSupported } from '../state/supportedFeatures'; import { UserPermissions } from '../state/restInterfaces'; import KafkaConnectOverview from './pages/connect/Overview'; import KafkaConnectorDetails from './pages/connect/Connector.Details'; @@ -181,7 +181,7 @@ function routeVisibility( requiredAppFeatures?: AppFeature[], ): () => MenuItemState { return () => { - const v = typeof visible === 'boolean' + let v = typeof visible === 'boolean' ? visible : visible(); @@ -189,7 +189,11 @@ function routeVisibility( if (requiredFeatures) for (const f of requiredFeatures) { if (!isSupported(f)) { - disabledReasons.push(DisabledReasons.notSupported); + if (shouldHideIfNotSupported(f)) { + v = false + } else { + disabledReasons.push(DisabledReasons.notSupported); + } break; } } diff --git a/frontend/src/state/supportedFeatures.ts b/frontend/src/state/supportedFeatures.ts index 69db0ebff..b3659bb01 100644 --- a/frontend/src/state/supportedFeatures.ts +++ b/frontend/src/state/supportedFeatures.ts @@ -52,6 +52,14 @@ export function isSupported(f: FeatureEntry): boolean { return false; } +/** + * A list of features we should hide instead of showing a disabled message. + */ +const HIDE_IF_NOT_SUPPORTED_FEATURES = [Feature.GetQuotas] +export function shouldHideIfNotSupported(f: FeatureEntry): boolean { + return HIDE_IF_NOT_SUPPORTED_FEATURES.includes(f) +} + class SupportedFeatures { @computed get clusterConfig(): boolean { return isSupported(Feature.ClusterConfig); } @computed get consumerGroups(): boolean { return isSupported(Feature.ConsumerGroups); }