/** What is happening to a saved conversation decision's paragraph. */ import { useState } from "react"; import type { Question } from "@chopin/protocol"; import type { Transport } from "@chopin/question/react"; export function WriteupStatus( { canEdit, connected, meta, wire }: { canEdit: boolean; connected: boolean; meta: Question.CardMeta; wire?: Transport; }, ) { let [retrying, setRetrying] = useState(false); let [error, setError] = useState(); if (meta.proseOrphaned) return · prose removed; let writeup = meta.writeup; if (writeup?.status === "writing") { return ( ); } if (writeup?.status !== "failed") return null; let retry = async () => { if (!wire) return; setError(undefined); setRetrying(true); try { // A false `queued` means another writer retried first; republished metadata shows that. await wire.ask("conversation-plan:retry-job", { jobId: writeup.job }); } catch { setError("Couldn't retry. Try again."); } setRetrying(false); }; return ( Couldn't write this up {error && {error}} ); }