import { NostrLink } from "@snort/system"; import classNames from "classnames"; import Profile from "../components/profile"; import { Report } from "../upload/admin"; export default function ReportList({ reports, pages, page, onPage, onAcknowledge, onDeleteFile, }: { reports: Array; pages?: number; page?: number; onPage?: (n: number) => void; onAcknowledge?: (reportId: number) => void; onDeleteFile?: (fileId: string) => void; }) { if (reports.length === 0) { return No Reports; } function pageButtons(page: number, n: number) { const ret = []; const start = 0; for (let x = start; x < n; x++) { ret.push(
onPage?.(x)} className={classNames( "bg-neutral-700 hover:bg-neutral-600 min-w-8 text-center cursor-pointer font-bold", { "rounded-l-md": x === start, "rounded-r-md": x + 1 === n, "bg-neutral-400": page === x, }, )} > {x + 1}
, ); } return ret; } function getReporterPubkey(eventJson: string): string | null { try { const event = JSON.parse(eventJson); return event.pubkey; } catch { return null; } } function getReportReason(eventJson: string): string { try { const event = JSON.parse(eventJson); return event.content || "No reason provided"; } catch { return "Invalid event data"; } } function formatDate(dateString: string): string { return new Date(dateString).toLocaleString(); } return ( <> {reports.map((report) => { const reporterPubkey = getReporterPubkey(report.event_json); const reason = getReportReason(report.event_json); return ( ); })}
Report ID File ID Reporter Reason Created Actions
{report.id} {report.file_id.substring(0, 12)}... {reporterPubkey ? ( ) : ( "Unknown" )} {reason} {formatDate(report.created)}
{pages !== undefined && ( <>
{pageButtons(page ?? 0, pages)}
)} ); }