From: Stephen Smith Date: Fri, 28 Jun 2024 15:21:01 +0000 (-0400) Subject: 21764: Add more type safety to TreePicker X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/1cd9a733752864b94d67504dee0a11b369930ba4 21764: Add more type safety to TreePicker Arvados-DCO-1.1-Signed-off-by: Stephen Smith --- diff --git a/services/workbench2/src/views-components/tree-picker/tree-picker.ts b/services/workbench2/src/views-components/tree-picker/tree-picker.ts index 3bd1aee7a8..6ea8c56b18 100644 --- a/services/workbench2/src/views-components/tree-picker/tree-picker.ts +++ b/services/workbench2/src/views-components/tree-picker/tree-picker.ts @@ -20,18 +20,18 @@ export interface TreePickerProps { toggleItemSelection: Callback; } -const flatTree = (itemsIdMap: Map, depth: number, items?: any): [] => { +const flatTree = (itemsIdMap: Map>, depth: number, items?: TreeItem[]): TreeItem[] => { return items ? items - .map((item: any) => addToItemsIdMap(item, itemsIdMap)) - .reduce((prev: Array, next: any) => { + .map((item: TreeItem) => addToItemsIdMap(item, itemsIdMap)) + .reduce((acc: Array>, next: TreeItem) => { const { items } = next; - prev.push({ ...next, depth }); - prev.push(...(next.open ? flatTree(itemsIdMap, depth + 1, items) : [])); - return prev; - }, []) : []; + acc.push({ ...next, depth }); + acc.push(...(next.open ? flatTree(itemsIdMap, depth + 1, items) : [])); + return acc; + }, [] as TreeItem[]) : []; }; -const addToItemsIdMap = (item: TreeItem, itemsIdMap: Map>) => { +const addToItemsIdMap = (item: TreeItem, itemsIdMap: Map>): TreeItem => { itemsIdMap[item.id] = item; return item; }; @@ -39,7 +39,7 @@ const addToItemsIdMap = (item: TreeItem, itemsIdMap: Map(state: RootState, props: TreePickerProps): Pick, 'items' | 'disableRipple' | 'itemsMap'> => { const itemsIdMap: Map> = new Map(); - const tree = state.treePicker[props.pickerId] || createTree(); + const tree: Tree = state.treePicker[props.pickerId] || createTree(); return { disableRipple: true, items: getNodeChildrenIds('')(tree) @@ -54,7 +54,7 @@ const mapStateToProps = }; }; -const mapDispatchToProps = (_: Dispatch, props: TreePickerProps): Pick, 'onContextMenu' | 'toggleItemOpen' | 'toggleItemActive' | 'toggleItemSelection'> => ({ +const mapDispatchToProps = (_: Dispatch, props: TreePickerProps): Pick, 'onContextMenu' | 'toggleItemOpen' | 'toggleItemActive' | 'toggleItemSelection'> => ({ onContextMenu: (event, item) => props.onContextMenu(event, item, props.pickerId), toggleItemActive: (event, item) => props.toggleItemActive(event, item, props.pickerId), toggleItemOpen: (event, item) => props.toggleItemOpen(event, item, props.pickerId),