import { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import EditorLayout from '../components/EditorLayout.jsx'; import StatusBadge from '../components/StatusBadge.jsx'; import { ApiError, fetchViewDocument, friendlyErrorMessage } from '../lib/api.js'; import { downloadDocument } from '../lib/download.js'; import { STR } from '../lib/strings.js'; import LinkErrorPage from './LinkErrorPage.jsx'; export default function SharedViewPage() { const { token } = useParams(); const [doc, setDoc] = useState(null); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { let cancelled = false; (async () => { setLoading(true); setError(null); try { const data = await fetchViewDocument(token); if (!cancelled) setDoc(data); } catch (err) { if (!cancelled) setError(err); } finally { if (!cancelled) setLoading(false); } })(); return () => { cancelled = true; }; }, [token]); if (loading) { return (
{STR.LOADING_DOCUMENT}
{STR.SHARED_VIEW}