From 4955231abf4953d1cf6fb318eab57191cd37bb7f Mon Sep 17 00:00:00 2001 From: Miguel Serrano Date: Wed, 27 Jan 2021 10:54:29 +0100 Subject: [PATCH] Merge pull request #3601 from overleaf/ta-file-tree-open-doc-null [ReactFileTree] Fix Possible Entities Not Found Error GitOrigin-RevId: 15fd8c0ad115cc30427114330e2a6e960fd2e9a2 --- .../js/features/file-tree/contexts/file-tree-selectable.js | 7 +++++-- .../features/file-tree/components/file-tree-root.test.js | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/services/web/frontend/js/features/file-tree/contexts/file-tree-selectable.js b/services/web/frontend/js/features/file-tree/contexts/file-tree-selectable.js index 3242104c66..cb561d7d2c 100644 --- a/services/web/frontend/js/features/file-tree/contexts/file-tree-selectable.js +++ b/services/web/frontend/js/features/file-tree/contexts/file-tree-selectable.js @@ -130,11 +130,14 @@ export function FileTreeSelectableProvider({ useEffect(() => { // listen for `editor.openDoc` and selected that doc function handleOpenDoc(ev) { - dispatch({ type: ACTION_TYPES.SELECT, id: ev.detail }) + const found = findInTree(fileTreeData, ev.detail) + if (!found) return + + dispatch({ type: ACTION_TYPES.SELECT, id: found.entity._id }) } window.addEventListener('editor.openDoc', handleOpenDoc) return () => window.removeEventListener('editor.openDoc', handleOpenDoc) - }, []) + }, [fileTreeData]) return ( ', function() { screen.getByRole('treeitem', { name: 'main.tex', selected: true }) + // entities not found should be ignored + window.dispatchEvent( + new CustomEvent('editor.openDoc', { detail: 'not-an-id' }) + ) + screen.getByRole('treeitem', { name: 'main.tex', selected: true }) + window.dispatchEvent( new CustomEvent('editor.openDoc', { detail: '789ghi' }) )