diff --git a/src/components/FileExplorer/hooks/useSetupTree.tsx b/src/components/FileExplorer/hooks/useSetupTree.tsx index 521b429..74779f9 100644 --- a/src/components/FileExplorer/hooks/useSetupTree.tsx +++ b/src/components/FileExplorer/hooks/useSetupTree.tsx @@ -40,17 +40,17 @@ export function useVisibleNodesGenerator(metaData: MetaData) { setStateContext('tree-rendering') - const visibleNodesGenerator = new VisibleNodesGenerator({ - root: treeRoot, - defer, - compress: config.compressSingletonFolder, - async getTreeData(path) { - const { root } = await platform.getTreeData(metaData, path, false, accessToken) - return root - }, - }) - - setVisibleNodesGenerator(visibleNodesGenerator) + setVisibleNodesGenerator( + new VisibleNodesGenerator({ + root: treeRoot, + defer, + compress: config.compressSingletonFolder, + async getTreeData(path) { + const { root } = await platform.getTreeData(metaData, path, false, accessToken) + return root + }, + }), + ) setStateContext('tree-rendered') }) diff --git a/src/components/FileExplorer/useVisibleNodes.tsx b/src/components/FileExplorer/useVisibleNodes.tsx index f5b1841..7d70b73 100644 --- a/src/components/FileExplorer/useVisibleNodes.tsx +++ b/src/components/FileExplorer/useVisibleNodes.tsx @@ -2,7 +2,14 @@ import { useEffect, useState } from 'react' import { VisibleNodes, VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' export function useVisibleNodes(visibleNodesGenerator: VisibleNodesGenerator | null) { - const [visibleNodes, setVisibleNodes] = useState(null) - useEffect(() => visibleNodesGenerator?.onUpdate(setVisibleNodes), [visibleNodesGenerator]) + const [visibleNodes, setVisibleNodes] = useState( + visibleNodesGenerator?.visibleNodes || null, + ) + useEffect(() => { + const $visibleNodes = visibleNodesGenerator?.visibleNodes || null + if (visibleNodes !== $visibleNodes) setVisibleNodes($visibleNodes) + + return visibleNodesGenerator?.onUpdate(setVisibleNodes) + }, [visibleNodesGenerator]) // eslint-disable-line react-hooks/exhaustive-deps return visibleNodes }