import { postJSON } from '@/infrastructure/fetch-json' import { useProjectContext } from '@/shared/context/project-context' import { useFileTreeData } from '@/shared/context/file-tree-data-context' import { useCallback, useState } from 'react' import { showExportDocumentError, showExportDocumentSuccess, hideExportDocumentError, } from '../components/toolbar/export-document-toasts' export default function useConvertDoc( type: 'typst' | 'latex', docId: string | null ) { const { projectId } = useProjectContext() const { dispatchCreateDoc } = useFileTreeData() const [converting, setConverting] = useState(false) const convert = useCallback(async () => { if (!docId) return setConverting(true) hideExportDocumentError() try { const result = await postJSON( `/project/${projectId}/doc/${docId}/convert/${type}`, { body: {} } ) showExportDocumentSuccess(type) if (result.isNew) { dispatchCreateDoc(result.parentFolderId, { _id: result.docId, name: result.name, }) } } catch (err: any) { const errorMessage = err?.data?.error showExportDocumentError(errorMessage) } finally { setConverting(false) } }, [projectId, docId, type, dispatchCreateDoc]) return { convert, converting } }