From 72020b02b8ad51eb2c7ecf0d74d0882d0a174654 Mon Sep 17 00:00:00 2001 From: Thomas Nordquist Date: Wed, 17 Jul 2019 10:05:05 +0200 Subject: [PATCH] Update sidebar when topic is deleted --- app/src/components/Sidebar/Sidebar.tsx | 36 ++++++++++--------- .../components/Sidebar/TopicPanel/Topic.tsx | 1 - .../Sidebar/TopicPanel/TopicPanel.tsx | 13 +++---- .../helper/usePollingToFetchTreeNode.tsx | 6 ++-- backend/src/Model/TreeNode.ts | 2 +- 5 files changed, 31 insertions(+), 27 deletions(-) diff --git a/app/src/components/Sidebar/Sidebar.tsx b/app/src/components/Sidebar/Sidebar.tsx index 8e1928e..ce20c02 100644 --- a/app/src/components/Sidebar/Sidebar.tsx +++ b/app/src/components/Sidebar/Sidebar.tsx @@ -12,23 +12,23 @@ import { Theme, withStyles } from '@material-ui/core/styles' import { TopicViewModel } from '../../model/TopicViewModel' import TopicPanel from './TopicPanel/TopicPanel' import Panel from './Panel' +import { usePollingToFetchTreeNode } from '../helper/usePollingToFetchTreeNode' const throttle = require('lodash.throttle') const Publish = React.lazy(() => import('./Publish/Publish')) interface Props { - node?: q.TreeNode + nodePath?: string + tree?: q.Tree actions: typeof sidebarActions settingsActions: typeof settingsActions classes: any connectionId?: string } -function Sidebar(props: Props) { - const { classes, node } = props +function useUpdateNodeWhenNodeReceivesUpdates(node?: q.TreeNode) { const [lastUpdate, setLastUpdate] = useState(0) - const updateNode = useCallback( throttle(() => { setLastUpdate(node ? node.lastUpdate : 0) @@ -46,11 +46,18 @@ function Sidebar(props: Props) { node && node.onMessage.unsubscribe(updateCallback) } }, [node]) +} + +function Sidebar(props: Props) { + const { classes, tree, nodePath } = props + const node = usePollingToFetchTreeNode(tree, nodePath || '') + useUpdateNodeWhenNodeReceivesUpdates(node) + // console.log(node && node.path(), tree, nodePath) return ( -