"use client"; import { useCallback, useEffect, useState } from "react"; import { DeliveryStatusBadge } from "./shared/DeliveryStatusBadge"; interface Delivery { id: number; event_type: string; status: string; http_status: number | null; latency_ms: number | null; error: string | null; created_at: string; } interface WebhookDeliveriesPanelProps { webhookId: string; t: (key: string) => string; } export function WebhookDeliveriesPanel({ webhookId, t }: WebhookDeliveriesPanelProps) { const [deliveries, setDeliveries] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const load = useCallback(async () => { setLoading(true); setError(null); try { const res = await fetch(`/api/webhooks/${webhookId}/deliveries?limit=5`); const data = await res.json().catch(() => ({})); if (!res.ok) throw new Error(data.error || t("deliveries.loadFailed")); setDeliveries(Array.isArray(data.deliveries) ? data.deliveries : []); } catch (err) { setError(err instanceof Error ? err.message : t("deliveries.loadFailed")); } finally { setLoading(false); } }, [webhookId, t]); useEffect(() => { void load(); }, [load]); if (loading) { return

{t("loading")}

; } if (error) { return

{error}

; } if (deliveries.length === 0) { return

{t("deliveries.empty")}

; } return (
{deliveries.map((d) => ( ))}
{t("deliveries.status")} {t("deliveries.event")} {t("deliveries.latency")} {t("deliveries.at")}
{d.event_type} {d.latency_ms != null ? `${d.latency_ms}ms` : "—"} {new Date(d.created_at).toLocaleString()} {d.error && (

{d.error}

)}
); }