From 39919a321444e4a390e7878eba741f294b6954a8 Mon Sep 17 00:00:00 2001 From: panda Date: Tue, 4 Apr 2023 20:43:26 +0800 Subject: [PATCH] core: allow navigation sorting (#548) --- packages/hydrooj/src/lib/ui.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/hydrooj/src/lib/ui.ts b/packages/hydrooj/src/lib/ui.ts index be9336b94..6e8de7eb3 100644 --- a/packages/hydrooj/src/lib/ui.ts +++ b/packages/hydrooj/src/lib/ui.ts @@ -32,7 +32,11 @@ export const nodes = new Proxy({}, { }); export function inject(node: UIInjectableFields, name: string, args: Record = {}, ...permPrivChecker: PermPrivChecker) { const obj = { name, args: args || {}, checker: buildChecker(...permPrivChecker) }; - nodes[node].push(obj); + const idx = obj.args.before ? nodes[node].findIndex((i) => i.name === obj.args.before) : -1; + if (idx !== -1) { + if (obj.name in nodes[node]) nodes[node] = nodes[node].filter((i) => i.name !== obj.name); + nodes[node].splice(idx, 0, obj); + } else nodes[node].push(obj); return () => { nodes[node] = nodes[node].filter((i) => i !== obj); }; } export function getNodes(name: UIInjectableFields) {