From 9bca79456b0111677c19dacdb808dcdb82255a27 Mon Sep 17 00:00:00 2001 From: raintygao Date: Sun, 25 Jun 2023 11:37:27 +0800 Subject: [PATCH] update menu filter logic (#28) * feat: update menu logic Signed-off-by: tygao * fix: use navLinks to filter Signed-off-by: tygao --------- Signed-off-by: tygao --- .../chrome/ui/header/collapsible_nav.tsx | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/core/public/chrome/ui/header/collapsible_nav.tsx b/src/core/public/chrome/ui/header/collapsible_nav.tsx index 549f13997f79..2b7fec106849 100644 --- a/src/core/public/chrome/ui/header/collapsible_nav.tsx +++ b/src/core/public/chrome/ui/header/collapsible_nav.tsx @@ -126,11 +126,11 @@ export function CollapsibleNav({ const appId = useObservable(observables.appId$, ''); const currentWorkspace = useObservable(observables.currentWorkspace$); const lockRef = useRef(null); - const groupedNavLinks = groupBy(navLinks, (link) => link?.category?.id); + const filterdLinks = getFilterLinks(currentWorkspace, navLinks); + const groupedNavLinks = groupBy(filterdLinks, (link) => link?.category?.id); const { undefined: unknowns = [], ...allCategorizedLinks } = groupedNavLinks; - const filterdLinks = getFilterLinks(currentWorkspace, allCategorizedLinks); - const categoryDictionary = getAllCategories(filterdLinks); - const orderedCategories = getOrderedCategories(filterdLinks, categoryDictionary); + const categoryDictionary = getAllCategories(allCategorizedLinks); + const orderedCategories = getOrderedCategories(allCategorizedLinks, categoryDictionary); const readyForEUI = (link: ChromeNavLink, needsIcon: boolean = false) => { return createEuiListItem({ @@ -152,20 +152,13 @@ export function CollapsibleNav({ function getFilterLinks( workspace: WorkspaceAttribute | null | undefined, - categorizedLinks: Record + allNavLinks: ChromeNavLink[] ) { - // plugins are in this dictionary - const pluginsDictionary = categorizedLinks.opensearch; - if (!pluginsDictionary) return categorizedLinks; + if (!workspace) return allNavLinks; - const features = workspace?.features ?? []; - const newPluginsDictionary = pluginsDictionary.filter((item) => features.indexOf(item.id) > -1); - if (newPluginsDictionary.length === 0) { - delete categorizedLinks.opensearch; - } else { - categorizedLinks.opensearch = newPluginsDictionary; - } - return categorizedLinks; + const features = workspace.features ?? []; + const links = allNavLinks.filter((item) => features.indexOf(item.id) > -1); + return links; } /**