"use client" import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Badge } from "@/components/ui/badge" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" import { toast } from "sonner" import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query" import axios from "axios" import YouTube from "react-youtube" const fetchReviewQueue = async () => { const response = await axios.get("/api/review-queue") return response.data } const updateReviewItem = async (id, status, metadata) => { const response = await axios.put(`/api/review-queue/${id}`, { status, metadata }) return response.data } export function ReviewQueue() { const [selectedItem, setSelectedItem] = useState(null) const queryClient = useQueryClient() const { data: queue, isLoading, error } = useQuery({ queryKey: ["reviewQueue"], queryFn: fetchReviewQueue, }) const mutation = useMutation({ mutationFn: updateReviewItem, onSuccess: () => { queryClient.invalidateQueries(["reviewQueue"]) toast.success("Item updated successfully") setSelectedItem(null) }, onError: (error) => { toast.error(`Error updating item: ${error.message}`) }, }) const handleApprove = (item) => { mutation.mutate({ id: item.id, status: "approved", metadata: item.metadata }) } const handleReject = (item) => { mutation.mutate({ id: item.id, status: "rejected", metadata: item.metadata }) } const handleEdit = (item) => { setSelectedItem(item) } const handleSaveEdit = () => { mutation.mutate({ id: selectedItem.id, status: "approved", metadata: selectedItem.metadata, }) } if (isLoading) return