(null);
const [threadOpen, setThreadOpen] = useState(false);
@@ -302,6 +308,25 @@ export default function MailViewPage({
}
}
+ async function handleOCRDownload() {
+ setOcrLoading(true);
+ setOcrInfo(null);
+ try {
+ const result = await downloadMailOCRText(id);
+ if (result.kind === "ok") {
+ triggerDownload(result.blob, result.filename);
+ } else if (result.kind === "pending") {
+ setOcrInfo("OCR läuft noch, bitte gleich nochmal versuchen.");
+ } else {
+ setOcrInfo("Kein OCR-Text verfügbar.");
+ }
+ } catch (e) {
+ alert(`OCR-Download fehlgeschlagen: ${e instanceof Error ? e.message : e}`);
+ } finally {
+ setOcrLoading(false);
+ }
+ }
+
return (
@@ -341,9 +366,26 @@ export default function MailViewPage({
>
{pdfLoading ? "..." : "Als PDF exportieren"}
+ {mail.ocr_status === "done" && (mail.ocr_chars ?? 0) > 0 && (
+
+ )}
)}
+ {ocrInfo && (
+
+ {ocrInfo}
+
+ )}
{/* Loading */}
{loading && (