Revert "chore: Convert sidebarItemInjectionToken to use InjectWithMetadata instead of duplicating the IDs"

This reverts commit 81293304a7.
This commit is contained in:
Sebastian Malton committed 2023-05-23 10:08:42 -04:00
1 parent 9276df0592
commit 93bc41f9a3
62 files changed
+212 -145

No files matched your search

@@ -1,21 +1,26 @@
import { getInjectable, InjectionInstanceWithMeta } from "@ogre-tools/injectable";
/* eslint-disable prettier/prettier */
import { getInjectable } from "@ogre-tools/injectable";
import { computedInjectManyInjectable } from "@ogre-tools/injectable-extension-for-mobx";
import { SidebarItemDeclaration, sidebarItemInjectionToken, SidebarItemRegistration } from "./tokens";
import { HierarchicalSidebarItem, sidebarItemInjectionToken, SidebarItemRegistration } from "./tokens";
import { computed } from "mobx";
import { byOrderNumber } from "@k8slens/utilities";
const getSidebarItemsHierarchy = (
registrations: InjectionInstanceWithMeta<SidebarItemRegistration>[],
registrations: SidebarItemRegistration[],
parentId: string | null,
): SidebarItemDeclaration[] =>
): HierarchicalSidebarItem[] => (
registrations
.filter(({ instance }) => instance.parentId === parentId)
.map(({ instance: { isActive, isVisible, ...registration }, meta: { id } }) => {
const children = getSidebarItemsHierarchy(registrations, id);
.filter((item) => item.parentId === parentId)
.map(({
isActive,
isVisible,
...registration
}) => {
const children = getSidebarItemsHierarchy(registrations, registration.id);
return {
...registration,
id,
children,
isVisible: computed(() => {
if (children.length === 0) {
@@ -41,7 +46,8 @@ const getSidebarItemsHierarchy = (
}),
};
})
.sort(byOrderNumber);
.sort(byOrderNumber)
);
const sidebarItemsInjectable = getInjectable({
id: "sidebar-items",
@@ -49,11 +55,7 @@ const sidebarItemsInjectable = getInjectable({
const computedInjectMany = di.inject(computedInjectManyInjectable);
const sidebarItemRegistrations = computedInjectMany(sidebarItemInjectionToken);
return computed(() => {
void sidebarItemRegistrations.get();
return getSidebarItemsHierarchy(di.injectManyWithMeta(sidebarItemInjectionToken), null);
});
return computed(() => getSidebarItemsHierarchy(sidebarItemRegistrations.get(), null));
},
});
+6 -3
View File
@@ -8,7 +8,7 @@ import type { IComputedValue } from "mobx";
import type { StrictReactNode } from "@k8slens/utilities";
export interface SidebarItemRegistration {
id?: undefined;
id: string;
parentId: string | null;
title: StrictReactNode;
onClick: () => void;
@@ -18,7 +18,7 @@ export interface SidebarItemRegistration {
orderNumber: number;
}
export interface SidebarItemDeclaration {
export interface SidebarItem {
id: string;
parentId: string | null;
title: StrictReactNode;
@@ -26,7 +26,10 @@ export interface SidebarItemDeclaration {
getIcon?: () => StrictReactNode;
isActive: IComputedValue<boolean>;
isVisible: IComputedValue<boolean>;
children: SidebarItemDeclaration[];
}
export interface HierarchicalSidebarItem extends SidebarItem {
children: HierarchicalSidebarItem[];
}
export const sidebarItemInjectionToken = getInjectionToken<SidebarItemRegistration>({