"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 Nickname { id: number nickname: string description: string performance_id: number status: string } export function NicknameQueue() { const [nicknames, setNicknames] = useState([]) const [loading, setLoading] = useState(true) const fetchQueue = () => { const token = localStorage.getItem("token") if (!token) return fetch(`${getApiUrl()}/moderation/queue/nicknames`, { headers: { Authorization: `Bearer ${token}` } }) .then(res => res.json()) .then(setNicknames) .catch(console.error) .finally(() => setLoading(false)) } useEffect(() => { fetchQueue() }, []) const moderate = (id: number, action: "approve" | "reject") => { const token = localStorage.getItem("token") if (!token) return fetch(`${getApiUrl()}/moderation/nicknames/${id}/${action}`, { method: "PUT", headers: { Authorization: `Bearer ${token}` } }).then(() => { setNicknames(prev => prev.filter(n => n.id !== id)) }) } if (loading) return
Loading queue...
return (

Pending Nicknames

{nicknames.length === 0 ? (

No pending nicknames.

) : (
{nicknames.map((nick) => ( "{nick.nickname}"

{nick.description}

Performance ID: {nick.performance_id}

))}
)}
) }