import { Button, Dialog, i18nMessage } from "@govoplan/core-webui"; import { asArray, asRecord, formatDateTime, humanize } from "../utils/campaignView"; import { formatAddressList } from "./reviewFormatters"; export default function DeliveryJobDetailOverlay({ detail, onClose }: { detail: Record; onClose: () => void; }) { const job = asRecord(detail.job); const attempts = asRecord(detail.attempts); const smtpAttempts = asArray(attempts.smtp).map(asRecord); const imapAttempts = asArray(attempts.imap).map(asRecord); const issues = asArray(job.issues).map(asRecord); return ( i18n:govoplan-campaign.close.bbfa773e } >
i18n:govoplan-campaign.recipient.90343260
{formatAddressList(asRecord(job.resolved_recipients).to) || String(job.recipient_email ?? "-")}
i18n:govoplan-campaign.subject.8d183dbd
{String(job.subject ?? "-")}
i18n:govoplan-campaign.smtp_status.6211cb2b
{humanize(String(job.send_status ?? "-"))}
i18n:govoplan-campaign.imap_status.dbc2e430
{humanize(String(job.imap_status ?? "-"))}
{job.last_error ? (
i18n:govoplan-campaign.last_error.5e4df866
{String(job.last_error)}
) : null}
{issues.length > 0 && ( )}
); } function AttemptList({ title, rows, emptyText = "i18n:govoplan-campaign.no_rows.fdbeab75" }: { title: string; rows: Record[]; emptyText?: string; }) { return (

{title}

{rows.length === 0 ? (

{emptyText}

) : (
{rows.map((row, index) => (
{String( row.status ?? row.severity ?? row.code ?? i18nMessage("i18n:govoplan-campaign.value.44b8c76f", { value0: index + 1 }) )}
{String( row.message ?? row.error_message ?? row.smtp_response ?? row.folder ?? row.path ?? "-" )} {row.started_at || row.created_at ? ( {" · "} {formatDateTime(String(row.started_at ?? row.created_at))} ) : null} {row.finished_at || row.updated_at ? ( {" → "} {formatDateTime(String(row.finished_at ?? row.updated_at))} ) : null}
))}
)}
); }