'use client'; import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { campaignService } from '@/lib/services'; import { Campaign, CampaignStatus } from '@/types'; interface EditCampaignModalProps { isOpen: boolean; onClose: () => void; onSuccess: () => void; campaign: Campaign | null; } export default function EditCampaignModal({ isOpen, onClose, onSuccess, campaign }: EditCampaignModalProps) { const [formData, setFormData] = useState({ title: '', description: '', status: 'deposit' as CampaignStatus, budget_per_user: '', spending_tiers: '' }); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); useEffect(() => { if (campaign) { setFormData({ title: campaign.title, description: campaign.description, status: campaign.status, budget_per_user: campaign.budget_per_user.toString(), spending_tiers: campaign.spending_tiers }); } }, [campaign]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!campaign) return; setLoading(true); setError(''); try { await campaignService.update(campaign.id, { title: formData.title, description: formData.description, status: formData.status, budget_per_user: parseInt(formData.budget_per_user), spending_tiers: formData.spending_tiers }); onSuccess(); } catch (err) { setError('Erreur lors de la modification de la campagne'); console.error(err); } finally { setLoading(false); } }; const handleChange = (e: React.ChangeEvent) => { setFormData(prev => ({ ...prev, [e.target.name]: e.target.value })); }; const handleStatusChange = (value: string) => { setFormData(prev => ({ ...prev, status: value as CampaignStatus })); }; if (!campaign) return null; return ( Modifier la campagne Modifiez les paramètres de votre campagne de budget participatif.
{error && (

{error}

)}