"use client" import { useEffect, useState } from "react" import { getApiUrl } from "@/lib/api-config" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Check, X } from "lucide-react" interface Report { id: number reason: string details: string entity_type: string entity_id: number status: string created_at: string } export function ReportQueue() { const [reports, setReports] = useState([]) const [loading, setLoading] = useState(true) const fetchQueue = () => { const token = localStorage.getItem("token") if (!token) return fetch(`${getApiUrl()}/moderation/queue/reports`, { headers: { Authorization: `Bearer ${token}` } }) .then(res => res.json()) .then(setReports) .catch(console.error) .finally(() => setLoading(false)) } useEffect(() => { fetchQueue() }, []) const moderate = (id: number, action: "resolve" | "dismiss") => { const token = localStorage.getItem("token") if (!token) return fetch(`${getApiUrl()}/moderation/reports/${id}/${action}`, { method: "PUT", headers: { Authorization: `Bearer ${token}` } }).then(() => { setReports(prev => prev.filter(r => r.id !== id)) }) } if (loading) return
Loading queue...
return (

Pending Reports

{reports.length === 0 ? (

No pending reports.

) : (
{reports.map((report) => ( {report.reason}

{report.details}

Target: {report.entity_type} #{report.entity_id}

{new Date(report.created_at).toLocaleDateString()}

))}
)}
) }