import AnnouncementForm, { NormalizedAnnouncementPayload } from '@/components/addOns/addon-sidebars/announcements/AnnouncementForm';
import { useEffect } from 'react';
import { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/dialog';

type Mode = 'add' | 'edit';

const AnnouncementAddModal = ({
    isOpen,
    setIsOpen,
    mode = 'add',
    initialAnnouncement,
    onSubmit,
}: {
    isOpen: boolean;
    setIsOpen: (open: boolean) => void;
    mode?: Mode;
    initialAnnouncement?: any;
    onSubmit?: (values: any) => void;
}) => {
    useEffect(() => {
        // placeholder
    }, [isOpen, mode, initialAnnouncement]);

    const handleAnnouncementSubmit = (payload: NormalizedAnnouncementPayload) => {
        onSubmit ? onSubmit(payload) : console.log('Saving announcement:', payload);
        setIsOpen(false);
    };

    return (
        <Dialog open={isOpen} onOpenChange={setIsOpen}>
            <DialogContent className="sm:max-w-[640px]">
                <DialogHeader>
                    <DialogTitle className="text-xl font-semibold">{mode === 'add' ? 'Add Announcement' : 'Edit Announcement'}</DialogTitle>
                </DialogHeader>

                <div className="space-y-6 rounded-lg border p-2">
                    <AnnouncementForm
                        mode={mode === 'add' ? 'create' : 'edit'}
                        defaultValues={
                            initialAnnouncement
                                ? {
                                      title: initialAnnouncement.title || '',
                                      excerpt: initialAnnouncement.excerpt || '',
                                      description: initialAnnouncement.description || '',
                                      coverImage: initialAnnouncement.coverImage || '',
                                  }
                                : undefined
                        }
                        onSubmit={handleAnnouncementSubmit}
                        onBack={() => setIsOpen(false)}
                    />
                </div>
            </DialogContent>
        </Dialog>
    );
};

export default AnnouncementAddModal;
