use-select-file-tree-entity.ts 717 B

12345678910111213141516171819202122232425
  1. import { useFileTreeData } from '@/shared/context/file-tree-data-context'
  2. import { useCallback } from 'react'
  3. import { findInTree } from '@/features/file-tree/util/find-in-tree'
  4. export function useSelectFileTreeEntity() {
  5. const { fileTreeData, selectedEntities } = useFileTreeData()
  6. const selectEntity = useCallback(
  7. id => {
  8. if (
  9. selectedEntities.length === 1 &&
  10. selectedEntities[0].entity._id === id
  11. ) {
  12. return
  13. }
  14. const entityToSelect = findInTree(fileTreeData, id)
  15. if (entityToSelect) {
  16. window.dispatchEvent(new CustomEvent('editor.openDoc', { detail: id }))
  17. }
  18. },
  19. [fileTreeData, selectedEntities]
  20. )
  21. return { selectEntity }
  22. }