Fix treeNode enhancer

This commit is contained in:
Thomas Nordquist
2019-07-17 09:18:06 +02:00
parent 3737410563
commit 33f3458e38

View File

@@ -6,9 +6,20 @@ import { useState, useEffect } from 'react'
*/
export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: string) {
const [treeNode, setTreeNode] = useState<q.TreeNode<any> | undefined>()
useEffect(() => {
// If treeNode has been destroyed set treeNode to undefined
if (treeNode) {
const resetTreeNodeCallback = () => setTreeNode(undefined)
treeNode.onDestroy.subscribe(resetTreeNodeCallback)
return function cleanup() {
treeNode.onDestroy.unsubscribe(resetTreeNodeCallback)
}
}
}, [treeNode])
function pollUntilTreeNodeHasBeenFound() {
if (!tree) {
if (!tree || treeNode) {
return
}
@@ -33,6 +44,6 @@ export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: s
}
}
useEffect(pollUntilTreeNodeHasBeenFound, [tree])
useEffect(pollUntilTreeNodeHasBeenFound, [tree, treeNode])
return treeNode
}