From 33f3458e3809d8ecc98ee72b9d559f2c7a292ee4 Mon Sep 17 00:00:00 2001 From: Thomas Nordquist Date: Wed, 17 Jul 2019 09:18:06 +0200 Subject: [PATCH] Fix treeNode enhancer --- .../helper/usePollingToFetchTreeNode.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/components/helper/usePollingToFetchTreeNode.tsx b/app/src/components/helper/usePollingToFetchTreeNode.tsx index 3cd8697..205c029 100644 --- a/app/src/components/helper/usePollingToFetchTreeNode.tsx +++ b/app/src/components/helper/usePollingToFetchTreeNode.tsx @@ -6,9 +6,20 @@ import { useState, useEffect } from 'react' */ export function usePollingToFetchTreeNode(tree: q.Tree | undefined, path: string) { const [treeNode, setTreeNode] = useState | 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 | undefined, path: s } } - useEffect(pollUntilTreeNodeHasBeenFound, [tree]) + useEffect(pollUntilTreeNodeHasBeenFound, [tree, treeNode]) return treeNode }