import { useCallback, useEffect, useState } from 'react'; import { fetchDocumentVersions, friendlyErrorMessage, restoreDocumentVersion, } from '../lib/api.js'; import { STR, formatVersionDate } from '../lib/strings.js'; export default function VersionHistory({ editToken, clientId, lockToken, onRestored, }) { const [open, setOpen] = useState(false); const [versions, setVersions] = useState([]); const [loading, setLoading] = useState(false); const [restoringId, setRestoringId] = useState(''); const [error, setError] = useState(''); const loadVersions = useCallback(async () => { setLoading(true); setError(''); try { const data = await fetchDocumentVersions(editToken, { clientId, lockToken }); setVersions(data.versions ?? []); } catch (err) { setError(friendlyErrorMessage(err)); } finally { setLoading(false); } }, [editToken, clientId, lockToken]); useEffect(() => { if (!open) return; loadVersions(); }, [open, loadVersions]); const handleRestore = async (versionId) => { const confirmed = window.confirm(STR.VERSION_RESTORE_CONFIRM); if (!confirmed) return; setRestoringId(versionId); setError(''); try { const data = await restoreDocumentVersion(editToken, versionId, { clientId, lockToken, }); onRestored(data); await loadVersions(); } catch (err) { setError(friendlyErrorMessage(err)); } finally { setRestoringId(''); } }; return ( <> {open && (
{STR.VERSION_LOADING}
} {!loading && versions.length === 0 && ({STR.VERSION_EMPTY}
)} {!loading && versions.length > 0 && ({error}
)}