use-open-file.ts 822 B

123456789101112131415161718192021222324
  1. import { useIdeContext } from '@/shared/context/ide-context'
  2. import { useFileTreeData } from '@/shared/context/file-tree-data-context'
  3. import { useCallback } from 'react'
  4. import { findInTree } from '@/features/file-tree/util/find-in-tree'
  5. export function useOpenFile() {
  6. const ide = useIdeContext()
  7. const { fileTreeData } = useFileTreeData()
  8. const openFileWithId = useCallback(
  9. (id: string) => {
  10. const result = findInTree(fileTreeData, id)
  11. if (result?.type === 'fileRef') {
  12. window.dispatchEvent(new CustomEvent('editor.openDoc', { detail: id }))
  13. }
  14. },
  15. [fileTreeData]
  16. )
  17. // Expose BinaryFilesManager via ide object solely for the benefit of the file
  18. // restore feature in history. This can be removed once Angular is gone.
  19. ide.binaryFilesManager = { openFileWithId }
  20. }