1- import { useMemo , useEffect , useState } from 'react' ;
1+ import { useMemo , useEffect , useRef , useState } from 'react' ;
22import { useApiResource , useProvidersConfigResource } from '../../lib/api/useApiResource' ;
33import { ManagedResourcesRequest } from '../../lib/api/types/crossplane/listManagedResources' ;
44import { resourcesInterval } from '../../lib/shared/constants' ;
@@ -92,11 +92,13 @@ export function useGraph(colorBy: ColorBy, onYamlClick: (item: ManagedResourceIt
9292 refreshInterval : resourcesInterval ,
9393 } ) ;
9494
95- const loading = managedResourcesLoading || providerConfigsLoading ;
95+ const initialLoaded = useRef ( false ) ;
96+ const isInitialLoading = ( managedResourcesLoading || providerConfigsLoading ) && ! initialLoaded . current ;
9697 const error = managedResourcesError || providerConfigsError ;
9798
9899 const treeData = useMemo ( ( ) => {
99100 if ( ! managedResources || ! providerConfigsList ) return [ ] ;
101+ if ( ! initialLoaded . current ) initialLoaded . current = true ;
100102 const allNodesMap = new Map < string , NodeData > ( ) ;
101103 managedResources . forEach ( ( group : ManagedResourceGroup ) => {
102104 group . items ?. forEach ( ( item : ManagedResourceItem ) => {
@@ -160,7 +162,7 @@ export function useGraph(colorBy: ColorBy, onYamlClick: (item: ManagedResourceIt
160162 } ) ;
161163 } ) ;
162164 return Array . from ( allNodesMap . values ( ) ) ;
163- } , [ managedResources , providerConfigsList , onYamlClick ] ) ;
165+ } , [ managedResources , providerConfigsList , onYamlClick , initialLoaded ] ) ;
164166
165167 const colorMap = useMemo ( ( ) => generateColorMap ( treeData , colorBy ) , [ treeData , colorBy ] ) ;
166168
@@ -178,5 +180,5 @@ export function useGraph(colorBy: ColorBy, onYamlClick: (item: ManagedResourceIt
178180 setEdges ( edges ) ;
179181 } , [ treeData , colorBy , colorMap ] ) ;
180182
181- return { nodes, edges, colorMap, loading, error } ;
183+ return { nodes, edges, colorMap, loading : isInitialLoading , error } ;
182184}
0 commit comments