import { useEffect } from 'react' import Toolbar from './toolbar/toolbar' import Main from './main' import { Diff, DocDiffResponse } from '../../services/types/doc' import { useHistoryContext } from '../../context/history-context' import { diffDoc } from '../../services/api' import { highlightsFromDiffResponse } from '../../utils/highlights-from-diff-response' import useAsync from '../../../../shared/hooks/use-async' import ErrorMessage from '../error-message' import { useTranslation } from 'react-i18next' function DiffView() { const { selection, projectId, loadingFileDiffs } = useHistoryContext() const { isLoading, data, runAsync, error } = useAsync() const { t } = useTranslation() const { updateRange, selectedFile } = selection useEffect(() => { if (!updateRange || !selectedFile?.pathname || loadingFileDiffs) { return } const { fromV, toV } = updateRange runAsync(diffDoc(projectId, fromV, toV, selectedFile.pathname)).catch( console.error ) }, [projectId, runAsync, updateRange, selectedFile, loadingFileDiffs]) let diff: Diff | null if (!data?.diff) { diff = null } else if ('binary' in data.diff) { diff = { binary: true } } else { diff = { binary: false, docDiff: highlightsFromDiffResponse(data.diff, t), } } return (
{error ? ( ) : ( <>
)}
) } export default DiffView