"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Trash2, Loader2 } from "lucide-react"; import { deleteForm } from "@/app/admin/form/actions"; import { deleteSubmission, deleteAllSubmissions } from "@/app/actions/submissions"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Spinner } from "@/components/ui/spinner"; import { getErrorMessage } from "@/lib/utils"; interface DeleteFormButtonProps { formId: string; } export function DeleteFormButton({ formId }: DeleteFormButtonProps) { const [open, setOpen] = useState(false); const [deleting, setDeleting] = useState(false); const handleDelete = () => { setDeleting(true); toast.promise(deleteForm(formId), { loading: "Deleting form...", success: () => { setOpen(false); setDeleting(false); return "Form deleted successfully!"; }, error: (err: unknown) => { setDeleting(false); return getErrorMessage(err, "Failed to delete form."); }, }); }; return ( Are you absolutely sure? This action cannot be undone. This will permanently delete the form, all of its questions, and all submissions/answers. ); } export function DeleteSubmissionButton({ id, redirectUrl, compact = false, }: { id: string; redirectUrl?: string; compact?: boolean; }) { const [loading, setLoading] = useState(false); const router = useRouter(); const handleDelete = () => { setLoading(true); toast.promise(deleteSubmission(id), { loading: "Deleting submission...", success: () => { if (redirectUrl) { router.push(redirectUrl); } setLoading(false); return "Submission deleted"; }, error: (err: unknown) => { setLoading(false); return getErrorMessage(err, "Failed to delete submission"); }, }); }; return ( Are you sure? This action cannot be undone. This will permanently delete this submission and remove its data from our servers. Cancel Delete ); } export function DeleteAllSubmissionsButton({ formId }: { formId: string }) { const [loading, setLoading] = useState(false); const handleDeleteAll = () => { setLoading(true); toast.promise(deleteAllSubmissions(formId), { loading: "Deleting all submissions...", success: () => { setLoading(false); return "All submissions deleted"; }, error: (err: unknown) => { setLoading(false); return getErrorMessage(err, "Failed to delete submissions"); }, }); }; return ( Are you absolutely sure? This action cannot be undone. This will permanently delete ALL submissions and remove their data from our servers. Cancel Delete all responses ); }