file-tree.tsx 1.6 KB

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