file-tree.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React, { memo, useCallback, useState } from 'react'
  2. import { useUserContext } from '@/shared/context/user-context'
  3. import { useReferencesContext } from '@/features/ide-react/context/references-context'
  4. import { useIdeReactContext } from '@/features/ide-react/context/ide-react-context'
  5. import { useConnectionContext } from '@/features/ide-react/context/connection-context'
  6. import { RefProviders } from '../../../../../types/user'
  7. import FileTreeRoot from '@/features/file-tree/components/file-tree-root'
  8. import { useFileTreeOpenContext } from '@/features/ide-react/context/file-tree-open-context'
  9. export const FileTree = memo(function FileTree() {
  10. const user = useUserContext()
  11. const { indexAllReferences } = useReferencesContext()
  12. const { setStartedFreeTrial } = useIdeReactContext()
  13. const { isConnected, connectionState } = useConnectionContext()
  14. const { handleFileTreeInit, handleFileTreeSelect, handleFileTreeDelete } =
  15. useFileTreeOpenContext()
  16. const [refProviders, setRefProviders] = useState<RefProviders>(
  17. () => user.refProviders || {}
  18. )
  19. function reindexReferences() {
  20. indexAllReferences(true)
  21. }
  22. const setRefProviderEnabled = useCallback(
  23. (provider: keyof RefProviders, value = true) => {
  24. setRefProviders(refProviders => ({ ...refProviders, [provider]: value }))
  25. },
  26. []
  27. )
  28. return (
  29. <FileTreeRoot
  30. refProviders={refProviders}
  31. reindexReferences={reindexReferences}
  32. setRefProviderEnabled={setRefProviderEnabled}
  33. setStartedFreeTrial={setStartedFreeTrial}
  34. isConnected={isConnected || connectionState.reconnectAt !== null}
  35. onInit={handleFileTreeInit}
  36. onSelect={handleFileTreeSelect}
  37. onDelete={handleFileTreeDelete}
  38. />
  39. )
  40. })