refactor: migrate global toast notifications to Sonner and update admin UI navigation, layouts, and submission workflows
This commit is contained in:
@@ -37,7 +37,7 @@ export function AdminSidebar() {
|
||||
<SidebarMenuButton asChild isActive={pathname === "/form/admin"}>
|
||||
<Link href="/form/admin">
|
||||
<LayoutDashboard className="w-4 h-4" />
|
||||
<span>Admin Dashboard</span>
|
||||
<span>Dashboard</span>
|
||||
</Link>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
@@ -46,7 +46,7 @@ export function AdminSidebar() {
|
||||
<SidebarMenuButton asChild isActive={pathname.startsWith("/form/admin/result")}>
|
||||
<Link href="/form/admin/result">
|
||||
<ClipboardList className="w-4 h-4" />
|
||||
<span>Result Page</span>
|
||||
<span>Response</span>
|
||||
</Link>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
@@ -70,7 +70,7 @@ export function AdminSidebar() {
|
||||
<SidebarMenuButton asChild>
|
||||
<Link href="/form">
|
||||
<ArrowLeft className="w-4 h-4" />
|
||||
<span>Exit Admin</span>
|
||||
<span>Go public</span>
|
||||
</Link>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
|
||||
@@ -37,17 +37,20 @@ export function DeleteFormButton({ formId }: DeleteFormButtonProps) {
|
||||
const [open, setOpen] = useState(false);
|
||||
const [deleting, setDeleting] = useState(false);
|
||||
|
||||
const handleDelete = async () => {
|
||||
const handleDelete = () => {
|
||||
setDeleting(true);
|
||||
try {
|
||||
await deleteForm(formId);
|
||||
toast.success("Form deleted successfully!");
|
||||
setOpen(false);
|
||||
} catch (err: any) {
|
||||
toast.error(err.message || "Failed to delete form.");
|
||||
} finally {
|
||||
setDeleting(false);
|
||||
}
|
||||
toast.promise(deleteForm(formId), {
|
||||
loading: "Deleting form...",
|
||||
success: () => {
|
||||
setOpen(false);
|
||||
setDeleting(false);
|
||||
return "Form deleted successfully!";
|
||||
},
|
||||
error: (err: any) => {
|
||||
setDeleting(false);
|
||||
return err.message || "Failed to delete form.";
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -88,19 +91,22 @@ export function DeleteSubmissionButton({ id, redirectUrl }: { id: string, redire
|
||||
const [loading, setLoading] = useState(false);
|
||||
const router = useRouter();
|
||||
|
||||
const handleDelete = async () => {
|
||||
const handleDelete = () => {
|
||||
setLoading(true);
|
||||
try {
|
||||
await deleteSubmission(id);
|
||||
toast.success("Submission deleted");
|
||||
if (redirectUrl) {
|
||||
router.push(redirectUrl);
|
||||
}
|
||||
} catch (err: any) {
|
||||
toast.error(err.message || "Failed to delete submission");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
toast.promise(deleteSubmission(id), {
|
||||
loading: "Deleting submission...",
|
||||
success: () => {
|
||||
if (redirectUrl) {
|
||||
router.push(redirectUrl);
|
||||
}
|
||||
setLoading(false);
|
||||
return "Submission deleted";
|
||||
},
|
||||
error: (err: any) => {
|
||||
setLoading(false);
|
||||
return err.message || "Failed to delete submission";
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -132,16 +138,19 @@ export function DeleteSubmissionButton({ id, redirectUrl }: { id: string, redire
|
||||
export function DeleteAllSubmissionsButton() {
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const handleDeleteAll = async () => {
|
||||
const handleDeleteAll = () => {
|
||||
setLoading(true);
|
||||
try {
|
||||
await deleteAllSubmissions();
|
||||
toast.success("All submissions deleted");
|
||||
} catch (err: any) {
|
||||
toast.error(err.message || "Failed to delete submissions");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
toast.promise(deleteAllSubmissions(), {
|
||||
loading: "Deleting all submissions...",
|
||||
success: () => {
|
||||
setLoading(false);
|
||||
return "All submissions deleted";
|
||||
},
|
||||
error: (err: any) => {
|
||||
setLoading(false);
|
||||
return err.message || "Failed to delete submissions";
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user