From bb31f3238ce4599107b3bfbfa7d06364763b5d72 Mon Sep 17 00:00:00 2001 From: Masum ULU <49063256+masumulu28@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:08:02 +0300 Subject: [PATCH] re-order and refactor methods --- .../core/src/lib/services/routes.service.ts | 82 +++++++++++-------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/services/routes.service.ts b/npm/ng-packs/packages/core/src/lib/services/routes.service.ts index f1c2327684..4c1cae7e39 100644 --- a/npm/ng-packs/packages/core/src/lib/services/routes.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/routes.service.ts @@ -52,31 +52,16 @@ export abstract class AbstractTreeService[] { - return createTreeFromList>( - items, - item => item[this.id], - item => item[this.parentId], - item => BaseTreeNode.create(item), - ); - } - - protected createGroupedTree(list: TreeNode[]): RouteGroup[] | undefined { - const map = createGroupMap(list, this.othersGroup); - if (!map) { - return undefined; - } - - return Array.from(map, ([key, items]) => ({ group: key, items })); - } - private filterWith(setOrMap: Set | Map): T[] { return this._flat$.value.filter(item => !setOrMap.has(item[this.id])); } private findItemsToRemove(set: Set): Set { return this._flat$.value.reduce((acc, item) => { - if (!acc.has(item[this.parentId])) return acc; + if (!acc.has(item[this.parentId])) { + return acc; + } + const childSet = new Set([item[this.id]]); const children = this.findItemsToRemove(childSet); return new Set([...acc, ...children]); @@ -90,6 +75,24 @@ export abstract class AbstractTreeService[] { + return createTreeFromList>( + items, + item => item[this.id], + item => item[this.parentId], + item => BaseTreeNode.create(item), + ); + } + + protected createGroupedTree(list: TreeNode[]): RouteGroup[] | undefined { + const map = createGroupMap(list, this.othersGroup); + if (!map) { + return undefined; + } + + return Array.from(map, ([key, items]) => ({ group: key, items })); + } + add(items: T[]): T[] { if (this.filterRoutesEnabled) { const map = new Map(); @@ -137,17 +140,26 @@ export abstract class AbstractTreeService) => boolean, tree = this.tree): TreeNode | null { - return tree.reduce | null>( - (acc, node) => (acc ? acc : predicate(node) ? node : this.find(predicate, node.children)), - null, - ); + find(predicate: (item: TreeNode) => boolean, tree = this.tree): TreeNode | null { + return tree.reduce | null>((acc, node) => { + if (acc) { + return acc; + } + + if (predicate(node)) { + return node; + } + + return this.find(predicate, node.children); + }, null); } patch(identifier: string, props: Partial): T[] | false { const flatItems = this._flat$.value; const index = flatItems.findIndex(item => item[this.id] === identifier); - if (index < 0) return false; + if (index < 0) { + return false; + } flatItems[index] = { ...flatItems[index], ...props }; @@ -171,15 +183,17 @@ export abstract class AbstractTreeService, tree = this.tree): TreeNode | null { const searchKeys = Object.keys(params) as Array>; - return tree.reduce | null>( - (acc, node) => - acc - ? acc - : searchKeys.every(key => node[key] === params[key]) - ? node - : this.search(params, node.children), - null, - ); + return tree.reduce | null>((acc, node) => { + if (acc) { + return acc; + } + + if (searchKeys.every(key => node.item[key] === params[key])) { + return node; + } + + return this.search(params, node.children); + }, null); } }