diff --git a/src/app/admin/AdminPanel.tsx b/src/app/admin/AdminPanel.tsx index 9d41955..7c3ab7e 100644 --- a/src/app/admin/AdminPanel.tsx +++ b/src/app/admin/AdminPanel.tsx @@ -134,6 +134,10 @@ export default function AdminPanel() { const [isLoadingOriginalEntry, setIsLoadingOriginalEntry] = useState(false); const [isSubmissionDetailOpen, setIsSubmissionDetailOpen] = useState(false); + const [isRejectDialogOpen, setIsRejectDialogOpen] = useState(false); + const [rejectionReason, setRejectionReason] = useState(""); + const [submissionToReject, setSubmissionToReject] = useState(null); + const [lexiconEntriesForDisplay, setLexiconEntriesForDisplay] = useState< AnyEntry[] >([]); @@ -540,26 +544,48 @@ export default function AdminPanel() { } }; - const handleRejectSubmission = async (submissionId: number) => { - const submission = userSubmissions.find((s) => s.id === submissionId); + const handleRejectSubmission = (submissionId: number) => { + setSubmissionToReject(submissionId); + setRejectionReason(""); + setIsRejectDialogOpen(true); + }; + + const handleConfirmReject = async () => { + if (!submissionToReject) return; + + if (!rejectionReason.trim()) { + toast({ + title: "Rejection Reason Required", + description: "Please provide a reason for rejecting this submission.", + variant: "destructive", + }); + return; + } + + const submission = userSubmissions.find((s) => s.id === submissionToReject); if (submission) { try { await updateSubmissionStatusInDatabase( - submissionId, + submissionToReject, "rejected", submission, + rejectionReason.trim(), ); toast({ title: "Submission Rejected", - description: `Submission ID "${submissionId}" has been rejected.`, + description: `Submission ID "${submissionToReject}" has been rejected.`, }); await refetchAllData(); - if (viewingSubmission?.id === submissionId) + if (viewingSubmission?.id === submissionToReject) { setIsSubmissionDetailOpen(false); + } + setIsRejectDialogOpen(false); + setSubmissionToReject(null); + setRejectionReason(""); } catch (error) { toast({ title: "Reject Failed", - description: `Could not reject submission ID "${submissionId}".`, + description: `Could not reject submission ID "${submissionToReject}".`, variant: "destructive", }); } @@ -1736,6 +1762,57 @@ export default function AdminPanel() { + + + + + Reject Submission + + Please provide a reason for rejecting this submission. This will be + sent to the submitter via email. + + +
+
+ +