"use client"; import { useState, useTransition } from "react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; import { Loader2, RotateCw, Save } from "lucide-react"; import { updateAnnouncement, retryAnnouncementEmails, } from "@/actions/announcements"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Label } from "@/components/ui/label"; import { Checkbox } from "@/components/ui/checkbox"; import { MarkdownContent } from "@/components/markdown-content"; export function EditNewsForm({ announcement, }: { announcement: { id: string; revision: number; title: string; content: string; }; }) { const router = useRouter(); const [pending, startTransition] = useTransition(); const [content, setContent] = useState(announcement.content); const [sendEmail, setSendEmail] = useState(false); function submit(formData: FormData) { formData.set("id", announcement.id); formData.set("revision", String(announcement.revision)); formData.set("sendEmail", sendEmail ? "on" : "off"); startTransition(async () => { try { const result = await updateAnnouncement(formData); if (!("success" in result)) { toast.error(result.error); return; } toast.success( result.queued ? `Mitteilung gespeichert. ${result.queued} E-Mails sind zum Versand vorgemerkt.` : result.changed ? "Mitteilung aktualisiert." : "Keine Änderungen vorhanden.", ); setSendEmail(false); router.refresh(); } catch { toast.error( "Mitteilung konnte nicht gespeichert werden. Bitte versuche es erneut.", ); } }); } return (
); } export function RetryNewsEmails({ id, revision, failed, }: { id: string; revision: number; failed: number; }) { const [pending, startTransition] = useTransition(); const router = useRouter(); return ( ); }