Преглед изворни кода

Merge pull request #3601 from overleaf/ta-file-tree-open-doc-null

[ReactFileTree] Fix Possible Entities Not Found Error

GitOrigin-RevId: 15fd8c0ad115cc30427114330e2a6e960fd2e9a2
Miguel Serrano пре 5 година
родитељ
комит
4955231abf

+ 5 - 2
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 (
     <FileTreeSelectableContext.Provider

+ 6 - 0
services/web/test/frontend/features/file-tree/components/file-tree-root.test.js

@@ -183,6 +183,12 @@ describe('<FileTreeRoot/>', 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' })
     )