import { useState, type ReactNode } from "react"; import { api, getErrorMessage } from "../api"; interface Props { docId: string; children: ReactNode; } export default function DocumentViewer({ docId, children }: Props) { const [expanded, setExpanded] = useState(false); const [fullText, setFullText] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); async function handleClick() { if (expanded) { setExpanded(false); return; } if (fullText !== null) { setExpanded(true); return; } setLoading(true); setError(""); try { const res = await api.getDocument(docId); setFullText(res.text); setExpanded(true); } catch (err) { setError(getErrorMessage(err)); } finally { setLoading(false); } } return (
{children}
{loading && (
Loading document...
)} {error && (
{error}
)} {expanded && fullText !== null && (
{docId}
{fullText}
)}
); }