Fix treeNode enhancer
This commit is contained in:
@@ -6,9 +6,20 @@ import { useState, useEffect } from 'react'
|
|||||||
*/
|
*/
|
||||||
export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: string) {
|
export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: string) {
|
||||||
const [treeNode, setTreeNode] = useState<q.TreeNode<any> | undefined>()
|
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() {
|
function pollUntilTreeNodeHasBeenFound() {
|
||||||
if (!tree) {
|
if (!tree || treeNode) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,6 +44,6 @@ export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(pollUntilTreeNodeHasBeenFound, [tree])
|
useEffect(pollUntilTreeNodeHasBeenFound, [tree, treeNode])
|
||||||
return treeNode
|
return treeNode
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user