import type { Metadata } from 'next'; import Link from 'next/link'; import { ActionButton, AdminFilters, AdminTitle, JsonPre, Mono, Notice, StatusChip } from '@/components/admin/ui'; import { DataTable, EmptyRow, Td, Th } from '@/components/ui/data-table'; import { LiveAgo } from '@/components/ui/live'; import { Pagination, withParams } from '@/components/ui/pagination'; import { Note } from '@/components/ui/section'; import { EmptyState, Unavailable } from '@/components/ui/unavailable'; import { quarantineAction } from '@/lib/admin/actions'; import { adminApi, load, requireAdmin } from '@/lib/admin/admin-api'; import { fmtDateTime, fmtInt } from '@/lib/format'; export const metadata: Metadata = { title: 'Quarantine', robots: { index: false, follow: false } }; export const dynamic = 'force-dynamic'; const LIMIT = 50; export default async function AdminQuarantinePage({ searchParams }: { searchParams: Promise> }) { await requireAdmin(); const sp = await searchParams; const current: Record = { status: sp.status ?? 'pending' }; if (sp.offset) current.offset = sp.offset; const offset = Math.max(0, Number(current.offset) || 0); const href = (patch: Record) => withParams('/admin/quarantine', current, patch); const ret = href({}); const res = await load(adminApi.quarantine({ status: current.status, limit: LIMIT, offset })); return ( <> Runs → ({ value: s, label: s })) }]} /> {!res.ok ? ( ) : res.data.items.length === 0 ? ( No held run for this status. ) : ( <> Id Connector Run Reason Counts Status Created Actions {res.data.items.length === 0 && No rows.} {res.data.items.map((q) => ( {q.id} {q.connector_name ?? '—'} {q.run_id ? {q.run_id} : '—'} {q.reason ?? '—'} {q.counts ? : '—'} {q.created_at ? : '—'} {q.status === 'pending' ? (
Release
Discard
) : ( — )} ))}
href({ offset: o || undefined })} className="mt-4" /> )} The release / discard endpoints answer 501 while the canonical service has not shipped them; the notice above reports the API's answer verbatim. ); }