Skip to content

Commit 9f0e7ab

Browse files
committed
refactor: remove unused menu transform provider and simplify menu resolution logic
1 parent fa3fa5c commit 9f0e7ab

1 file changed

Lines changed: 9 additions & 27 deletions

File tree

adminforth/index.ts

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import {
2626
UpdateResourceRecordResult,
2727
DeleteResourceRecordResult,
2828
AdminForthMenuContributionProvider,
29-
AdminForthMenuTransformProvider,
3029
} from './types/Back.js';
3130
import {
3231
AdminForthFilterOperators,
@@ -134,7 +133,6 @@ class AdminForth implements IAdminForth {
134133
pluginsById: Record<string, AdminForthPlugin> = {};
135134
private menuContributions: AdminForthMenuContribution[] = [];
136135
private menuContributionProviders: AdminForthMenuContributionProvider[] = [];
137-
private menuTransformProviders: AdminForthMenuTransformProvider[] = [];
138136
configValidator: IConfigValidator;
139137
restApi: AdminForthRestAPI;
140138

@@ -148,34 +146,28 @@ class AdminForth implements IAdminForth {
148146
this.menuContributionProviders.push(provider);
149147
}
150148

151-
registerMenuTransformProvider(provider: AdminForthMenuTransformProvider): void {
152-
this.menuTransformProviders.push(provider);
153-
}
154-
155149
getMenuContributions(): AdminForthMenuContribution[] {
156150
return [...this.menuContributions];
157151
}
158152

159153
async getMenuWithContributions(adminUser?: AdminUser, menu: AdminForthConfigMenuItem[] = this.config.menu): Promise<AdminForthConfigMenuItem[]> {
160154
const generateItemId = (item: AdminForthConfigMenuItem) =>
161155
md5hash(`menu-item-${item.label}-${item.resourceId || ''}-${item.path || ''}`);
162-
const cloneMenuItem = (item: AdminForthConfigMenuItem): AdminForthConfigMenuItem => ({
163-
...item,
164-
children: item.children?.map(cloneMenuItem),
165-
});
166-
const resolveMenuItemIds = (items: AdminForthConfigMenuItem[]): AdminForthConfigMenuItem[] => items.map((item) => ({
167-
...item,
168-
itemId: item.itemId || generateItemId(item),
169-
children: item.children ? resolveMenuItemIds(item.children) : item.children,
170-
}));
171156
const matchesTarget = (item: AdminForthConfigMenuItem, target: AdminForthMenuTarget) =>
172157
typeof target === 'string'
173158
? item.itemId === target
174159
: (target.itemId !== undefined && item.itemId === target.itemId)
175160
|| (target.resourceId !== undefined && item.resourceId === target.resourceId)
176161
|| (target.path !== undefined && item.path === target.path);
177162

178-
const resolvedMenu: AdminForthConfigMenuItem[] = resolveMenuItemIds(menu);
163+
const resolvedMenu: AdminForthConfigMenuItem[] = menu.map((item) => ({
164+
...item,
165+
itemId: item.itemId || generateItemId(item),
166+
children: item.children?.map((child) => ({
167+
...child,
168+
itemId: child.itemId || generateItemId(child),
169+
})),
170+
}));
179171
const usedItemIds = new Set(resolvedMenu.map((item) => item.itemId));
180172

181173
const providerContributions = await Promise.all(
@@ -211,17 +203,7 @@ class AdminForth implements IAdminForth {
211203
}
212204
}
213205

214-
let transformedMenu = resolvedMenu;
215-
216-
for (const provider of this.menuTransformProviders) {
217-
transformedMenu = resolveMenuItemIds(await provider({
218-
adminUser,
219-
adminforth: this,
220-
menu: transformedMenu.map(cloneMenuItem),
221-
}));
222-
}
223-
224-
return transformedMenu;
206+
return resolvedMenu;
225207
}
226208

227209
async refreshMenu(adminUser: AdminUser) {

0 commit comments

Comments
 (0)