Skip to content

Commit 9f60da9

Browse files
raintygaoruanyl
authored andcommitted
update menu filter logic (opensearch-project#28)
* feat: update menu logic Signed-off-by: tygao <tygao@amazon.com> * fix: use navLinks to filter Signed-off-by: tygao <tygao@amazon.com> --------- Signed-off-by: tygao <tygao@amazon.com>
1 parent 6024e9a commit 9f60da9

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

src/core/public/chrome/ui/header/collapsible_nav.tsx

+9-16
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,11 @@ export function CollapsibleNav({
126126
const appId = useObservable(observables.appId$, '');
127127
const currentWorkspace = useObservable(observables.currentWorkspace$);
128128
const lockRef = useRef<HTMLButtonElement>(null);
129-
const groupedNavLinks = groupBy(navLinks, (link) => link?.category?.id);
129+
const filterdLinks = getFilterLinks(currentWorkspace, navLinks);
130+
const groupedNavLinks = groupBy(filterdLinks, (link) => link?.category?.id);
130131
const { undefined: unknowns = [], ...allCategorizedLinks } = groupedNavLinks;
131-
const filterdLinks = getFilterLinks(currentWorkspace, allCategorizedLinks);
132-
const categoryDictionary = getAllCategories(filterdLinks);
133-
const orderedCategories = getOrderedCategories(filterdLinks, categoryDictionary);
132+
const categoryDictionary = getAllCategories(allCategorizedLinks);
133+
const orderedCategories = getOrderedCategories(allCategorizedLinks, categoryDictionary);
134134

135135
const readyForEUI = (link: ChromeNavLink, needsIcon: boolean = false) => {
136136
return createEuiListItem({
@@ -152,20 +152,13 @@ export function CollapsibleNav({
152152

153153
function getFilterLinks(
154154
workspace: WorkspaceAttribute | null | undefined,
155-
categorizedLinks: Record<string, ChromeNavLink[]>
155+
allNavLinks: ChromeNavLink[]
156156
) {
157-
// plugins are in this dictionary
158-
const pluginsDictionary = categorizedLinks.opensearch;
159-
if (!pluginsDictionary) return categorizedLinks;
157+
if (!workspace) return allNavLinks;
160158

161-
const features = workspace?.features ?? [];
162-
const newPluginsDictionary = pluginsDictionary.filter((item) => features.indexOf(item.id) > -1);
163-
if (newPluginsDictionary.length === 0) {
164-
delete categorizedLinks.opensearch;
165-
} else {
166-
categorizedLinks.opensearch = newPluginsDictionary;
167-
}
168-
return categorizedLinks;
159+
const features = workspace.features ?? [];
160+
const links = allNavLinks.filter((item) => features.indexOf(item.id) > -1);
161+
return links;
169162
}
170163

171164
/**

0 commit comments

Comments
 (0)