import { useState } from "react" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Plus } from "lucide-react" import { createNewsletter } from "@/lib/api" import { Checkbox } from "@/components/ui/checkbox" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" interface AddNewsletterDialogProps { isOpen: boolean folderOptions: string[] onOpenChange: (isOpen: boolean) => void onSuccess: () => void } export function AddNewsletterDialog({ isOpen, folderOptions, onOpenChange, onSuccess }: AddNewsletterDialogProps) { const [newNewsletter, setNewNewsletter] = useState({ name: "", emails: [""], move_to_folder: "", extract_content: false, }) const handleAddEmail = () => { setNewNewsletter((prev) => ({ ...prev, emails: [...prev.emails, ""], })) } const handleRemoveEmail = (index: number) => { setNewNewsletter((prev) => ({ ...prev, emails: prev.emails.filter((_, i) => i !== index), })) } const handleEmailChange = (index: number, value: string) => { setNewNewsletter((prev) => ({ ...prev, emails: prev.emails.map((email, i) => (i === index ? value : email)), })) } const handleSubmit = async () => { if (newNewsletter.name && newNewsletter.emails.some((email) => email.trim())) { try { await createNewsletter({ name: newNewsletter.name, sender_emails: newNewsletter.emails.filter((email) => email.trim()), move_to_folder: newNewsletter.move_to_folder, extract_content: newNewsletter.extract_content, }) setNewNewsletter({ name: "", emails: [""], move_to_folder: "", extract_content: false }) onOpenChange(false) onSuccess() } catch (error) { console.error("Failed to create newsletter:", error) } } } return ( Register New Newsletter Add a new newsletter.
setNewNewsletter((prev) => ({ ...prev, name: e.target.value }))} placeholder="Enter newsletter name" />
{newNewsletter.emails.map((email, index) => (
handleEmailChange(index, e.target.value)} placeholder="Enter email address" type="email" /> {newNewsletter.emails.length > 1 && ( )}
))}
setNewNewsletter((prev) => ({ ...prev, extract_content: !!checked })) } />
) }