'use client'; import { useEffect } from 'react'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { participantService } from '@/lib/services'; import { Participant } from '@/types'; import { useFormState } from '@/hooks/useFormState'; import { FormModal } from './base/FormModal'; import { handleFormError } from '@/lib/form-utils'; interface EditParticipantModalProps { isOpen: boolean; onClose: () => void; onSuccess: () => void; participant: Participant | null; } export default function EditParticipantModal({ isOpen, onClose, onSuccess, participant }: EditParticipantModalProps) { const initialData = { first_name: '', last_name: '', email: '' }; const { formData, setFormData, loading, setLoading, error, setError, handleChange } = useFormState(initialData); useEffect(() => { if (participant) { setFormData({ first_name: participant.first_name, last_name: participant.last_name, email: participant.email }); } }, [participant, setFormData]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!participant) return; setLoading(true); setError(''); try { await participantService.update(participant.id, { first_name: formData.first_name, last_name: formData.last_name, email: formData.email }); onSuccess(); } catch (err: any) { setError(handleFormError(err, 'la modification du participant')); } finally { setLoading(false); } }; if (!participant) return null; return (
); }