import { useQueryClient } from "@tanstack/react-query"; import { ExternalLink, Trash2 } from "lucide-react"; import { useState } from "react"; import { toast } from "sonner"; import type { MangaIngestReviewDTO } from "@/api/generated/api.schemas.ts"; import { useDeleteMangaIngestReview, useResolveMangaIngestReview, } from "@/api/generated/manga-ingest-review/manga-ingest-review.ts"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; interface ImportReviewCardProps { importReview: MangaIngestReviewDTO; queryKey: any; } export function ImportReviewCard({ importReview, queryKey, }: ImportReviewCardProps) { const queryClient = useQueryClient(); const [malId, setMalId] = useState(""); const { mutate: mutateDeleteImportReview } = useDeleteMangaIngestReview({ mutation: { onSuccess: () => { queryClient.invalidateQueries({ queryKey }); toast.success("Import review removed successfully"); }, }, }); const { mutate: mutateResolveImportReview, isPending: isPendingResolveImportReview, } = useResolveMangaIngestReview({ mutation: { onSuccess: () => { queryClient.invalidateQueries({ queryKey }); toast.success("Import review resolved successfully"); }, }, }); const handleResolve = () => { if (!malId.trim()) { alert("Please enter a MyAnimeList ID"); return; } mutateResolveImportReview({ params: { id: importReview.id, malId }, }); }; const handleRemove = () => { mutateDeleteImportReview({ id: importReview.id }); }; const importDate = new Date(importReview.createdAt).toLocaleDateString(); return (

{importReview.title}

Provider:{" "} {importReview.contentProviderName} {" "} • {importDate}

{importReview.externalUrl && ( )}

{importReview.reason}

setMalId(e.target.value)} className="mt-2" />
); }