import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { FileText } from "lucide-react"; import { casesApi, type CaseDocument, type CaseDocumentRef, type CaseTaskDocumentRef } from "@/api/cases"; import { issuesApi } from "@/api/issues"; import { CaseRevisionRail } from "@/components/CaseRevisionRail"; import { MarkdownBody } from "@/components/MarkdownBody"; import { SourceTrustBadge } from "@/components/SourceTrustBadge"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Link } from "@/lib/router"; /** Read-only current content and revision browsing, with no editor or restore path. */ export function CaseDocumentPreview({ caseIdentifier, document: documentRef }: { caseIdentifier: string; document: CaseDocumentRef | CaseTaskDocumentRef; }) { const [open, setOpen] = useState(false); const [historyOpen, setHistoryOpen] = useState(false); const taskRef = "sourceKind" in documentRef ? documentRef : null; const current = useQuery & { body: string }>({ queryKey: taskRef ? ["issues", "document", taskRef.taskId, taskRef.key] : ["cases", "document", caseIdentifier, documentRef.key], queryFn: () => taskRef ? issuesApi.getDocument(taskRef.taskId, taskRef.key) : casesApi.getDocument(caseIdentifier, documentRef.key), enabled: open, }); const document = current.data; const title = document?.title ?? documentRef.document.title ?? documentRef.key; return {title} {taskRef ? {taskRef.taskIdentifier ?? "Task document"} : `${caseIdentifier} · Saved on case`} {document?.latestRevisionNumber != null ? ` · Revision ${document.latestRevisionNumber}` : ""} {current.isLoading ?

Loading document…

: current.isError ?

This document couldn’t be loaded.

: document ?
{document.body ? {document.body} :

This document is empty.

}
setHistoryOpen(event.currentTarget.open)} className="space-y-3"> Revision history {historyOpen && }
: null}
; }