mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
6dc7ced2df
GitOrigin-RevId: 5a62bed823b716a6e0d6d3aa57ee187d161f3346
45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import React, { memo, useCallback, useState } from 'react'
|
|
import { useUserContext } from '@/shared/context/user-context'
|
|
import { useReferencesContext } from '@/features/ide-react/context/references-context'
|
|
import { useIdeReactContext } from '@/features/ide-react/context/ide-react-context'
|
|
import { useConnectionContext } from '@/features/ide-react/context/connection-context'
|
|
import { RefProviders } from '../../../../../types/user'
|
|
import FileTreeRoot from '@/features/file-tree/components/file-tree-root'
|
|
import { useFileTreeOpenContext } from '@/features/ide-react/context/file-tree-open-context'
|
|
|
|
export const FileTree = memo(function FileTree() {
|
|
const user = useUserContext()
|
|
const { indexAllReferences } = useReferencesContext()
|
|
const { setStartedFreeTrial } = useIdeReactContext()
|
|
const { isConnected, connectionState } = useConnectionContext()
|
|
const { handleFileTreeInit, handleFileTreeSelect, handleFileTreeDelete } =
|
|
useFileTreeOpenContext()
|
|
|
|
const [refProviders, setRefProviders] = useState<RefProviders>(
|
|
() => user.refProviders || {}
|
|
)
|
|
|
|
function reindexReferences() {
|
|
indexAllReferences(true)
|
|
}
|
|
|
|
const setRefProviderEnabled = useCallback(
|
|
(provider: keyof RefProviders, value = true) => {
|
|
setRefProviders(refProviders => ({ ...refProviders, [provider]: value }))
|
|
},
|
|
[]
|
|
)
|
|
|
|
return (
|
|
<FileTreeRoot
|
|
refProviders={refProviders}
|
|
reindexReferences={reindexReferences}
|
|
setRefProviderEnabled={setRefProviderEnabled}
|
|
setStartedFreeTrial={setStartedFreeTrial}
|
|
isConnected={isConnected || connectionState.reconnectAt !== null}
|
|
onInit={handleFileTreeInit}
|
|
onSelect={handleFileTreeSelect}
|
|
onDelete={handleFileTreeDelete}
|
|
/>
|
|
)
|
|
})
|