mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-04 20:33:12 -05:00
2bbead57ec
React IDE page: implement file views and file delete handling GitOrigin-RevId: 491cad7b147e55bc4a250da387916c7e2dff14ae
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import FileTreeRoot from '@/features/file-tree/components/file-tree-root'
|
|
import React, { 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 {
|
|
FileTreeDeleteHandler,
|
|
FileTreeSelectHandler,
|
|
} from '@/features/ide-react/types/file-tree'
|
|
import { RefProviders } from '../../../../../types/user'
|
|
|
|
type FileTreeProps = {
|
|
onInit: () => void
|
|
onSelect: FileTreeSelectHandler
|
|
onDelete: FileTreeDeleteHandler
|
|
}
|
|
|
|
export function FileTree({ onInit, onSelect, onDelete }: FileTreeProps) {
|
|
const user = useUserContext()
|
|
const { indexAllReferences } = useReferencesContext()
|
|
const { setStartedFreeTrial } = useIdeReactContext()
|
|
const { isConnected } = useConnectionContext()
|
|
|
|
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 (
|
|
<div className="file-tree">
|
|
<FileTreeRoot
|
|
refProviders={refProviders}
|
|
reindexReferences={reindexReferences}
|
|
setRefProviderEnabled={setRefProviderEnabled}
|
|
setStartedFreeTrial={setStartedFreeTrial}
|
|
isConnected={isConnected}
|
|
onInit={onInit}
|
|
onSelect={onSelect}
|
|
onDelete={onDelete}
|
|
/>
|
|
</div>
|
|
)
|
|
}
|