file-tree.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 {
  8. FileTreeDeleteHandler,
  9. FileTreeSelectHandler,
  10. } from '@/features/ide-react/types/file-tree'
  11. import { RefProviders } from '../../../../../types/user'
  12. type FileTreeProps = {
  13. onInit: () => void
  14. onSelect: FileTreeSelectHandler
  15. onDelete: FileTreeDeleteHandler
  16. }
  17. export function FileTree({ onInit, onSelect, onDelete }: FileTreeProps) {
  18. const user = useUserContext()
  19. const { indexAllReferences } = useReferencesContext()
  20. const { setStartedFreeTrial } = useIdeReactContext()
  21. const { isConnected } = useConnectionContext()
  22. const [refProviders, setRefProviders] = useState<RefProviders>(
  23. () => user.refProviders || {}
  24. )
  25. function reindexReferences() {
  26. indexAllReferences(true)
  27. }
  28. const setRefProviderEnabled = useCallback(
  29. (provider: keyof RefProviders, value = true) => {
  30. setRefProviders(refProviders => ({ ...refProviders, [provider]: value }))
  31. },
  32. []
  33. )
  34. return (
  35. <div className="file-tree">
  36. <FileTreeRoot
  37. refProviders={refProviders}
  38. reindexReferences={reindexReferences}
  39. setRefProviderEnabled={setRefProviderEnabled}
  40. setStartedFreeTrial={setStartedFreeTrial}
  41. isConnected={isConnected}
  42. onInit={onInit}
  43. onSelect={onSelect}
  44. onDelete={onDelete}
  45. />
  46. </div>
  47. )
  48. }