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

1234567891011121314151617181920212223242526
  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, setSelectedEntities } =
  6. useFileTreeData()
  7. const selectEntity = useCallback(
  8. id => {
  9. if (
  10. selectedEntities.length === 1 &&
  11. selectedEntities[0].entity._id === id
  12. ) {
  13. return
  14. }
  15. const entityToSelect = findInTree(fileTreeData, id)
  16. if (entityToSelect) {
  17. setSelectedEntities([entityToSelect])
  18. }
  19. },
  20. [fileTreeData, selectedEntities, setSelectedEntities]
  21. )
  22. return { selectEntity }
  23. }