@@ -47,7 +47,7 @@ export const useSpreadsheetEquipments = (
47
47
const currentRootNetworkUuid = useSelector ( ( state : AppState ) => state . currentRootNetworkUuid ) ;
48
48
const currentNode = useSelector ( ( state : AppState ) => state . currentTreeNode ) ;
49
49
const treeNodes = useSelector ( ( state : AppState ) => state . networkModificationTreeModel ?. treeNodes ) ;
50
- const [ builtAliasedNodesIds , setBuiltAliasedNodesIds ] = useState < UUID [ ] > ( [ ] ) ;
50
+ const [ builtAliasedNodesIds , setBuiltAliasedNodesIds ] = useState < UUID [ ] > ( ) ;
51
51
const [ isFetching , setIsFetching ] = useState < boolean > ( false ) ;
52
52
const { fetchNodesEquipmentData } = useFetchEquipment ( type ) ;
53
53
@@ -61,20 +61,25 @@ export const useSpreadsheetEquipments = (
61
61
. filter ( ( nodeAlias ) => validAlias ( nodeAlias ) )
62
62
. map ( ( nodeAlias ) => nodeAlias . id ) ;
63
63
if ( aliasedNodesIds . length > 0 ) {
64
- computedIds =
65
- treeNodes
66
- ?. filter (
67
- ( treeNode ) =>
68
- aliasedNodesIds . includes ( treeNode . id ) &&
69
- ( treeNode . type === NodeType . ROOT || isStatusBuilt ( treeNode . data . globalBuildStatus ) )
70
- )
71
- . map ( ( treeNode ) => treeNode . id ) ?? [ ] ;
64
+ treeNodes ?. forEach ( ( treeNode ) => {
65
+ if (
66
+ aliasedNodesIds . includes ( treeNode . id ) &&
67
+ ( treeNode . type === NodeType . ROOT || isStatusBuilt ( treeNode . data . globalBuildStatus ) )
68
+ ) {
69
+ computedIds . push ( treeNode . id ) ;
70
+ }
71
+ } ) ;
72
72
}
73
- computedIds . sort ( ( a , b ) => a . localeCompare ( b ) ) ;
74
73
// Because of treeNodes: update the state only on real values changes (to avoid multiple effects for the watchers)
75
- setBuiltAliasedNodesIds ( ( prevState ) =>
76
- JSON . stringify ( prevState ) !== JSON . stringify ( computedIds ) ? computedIds : prevState
77
- ) ;
74
+ setBuiltAliasedNodesIds ( ( prevState ) => {
75
+ const currentIds = prevState ;
76
+ currentIds ?. sort ( ( a , b ) => a . localeCompare ( b ) ) ;
77
+ computedIds . sort ( ( a , b ) => a . localeCompare ( b ) ) ;
78
+ if ( JSON . stringify ( currentIds ) !== JSON . stringify ( computedIds ) ) {
79
+ return computedIds ;
80
+ }
81
+ return prevState ;
82
+ } ) ;
78
83
} , [ nodeAliases , treeNodes ] ) ;
79
84
80
85
const nodesIdToFetch = useMemo ( ( ) => {
@@ -97,7 +102,7 @@ export const useSpreadsheetEquipments = (
97
102
98
103
// effect to unload equipment data when we remove an alias or unbuild an aliased node
99
104
useEffect ( ( ) => {
100
- if ( ! equipments || ! builtAliasedNodesIds . length || ! currentNode ?. id ) {
105
+ if ( ! equipments || ! builtAliasedNodesIds ? .length || ! currentNode ?. id ) {
101
106
return ;
102
107
}
103
108
const currentNodeId = currentNode . id ;
0 commit comments