file-tree.tsx 1.5 KB

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