"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 (
);
}
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
);
}