diff --git a/src/components/InquiryModal.test.tsx b/src/components/InquiryModal.test.tsx index f4a73e6..f8a7e0a 100644 --- a/src/components/InquiryModal.test.tsx +++ b/src/components/InquiryModal.test.tsx @@ -3,8 +3,7 @@ import userEvent from '@testing-library/user-event' import { describe, it, expect, vi, beforeEach } from 'vitest' const insertMock = vi.fn() -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const fromMock = vi.fn((_: string) => ({ insert: insertMock })) +const fromMock = vi.fn<(table: string) => { insert: typeof insertMock }>(() => ({ insert: insertMock })) vi.mock('../lib/supabase', () => ({ supabase: { from: (table: string) => fromMock(table) }, diff --git a/src/components/InquiryModal.tsx b/src/components/InquiryModal.tsx index e0e4fa4..6156567 100644 --- a/src/components/InquiryModal.tsx +++ b/src/components/InquiryModal.tsx @@ -23,6 +23,7 @@ function InquiryModal({ product, onClose }: InquiryModalProps) { const [errors, setErrors] = useState({}) const [submitError, setSubmitError] = useState('') const [submitted, setSubmitted] = useState(false) + const [submitting, setSubmitting] = useState(false) const nameInputRef = useRef(null) useEffect(() => { @@ -39,6 +40,8 @@ function InquiryModal({ product, onClose }: InquiryModalProps) { async function handleSubmit(e: FormEvent) { e.preventDefault() + if (submitting) return + const nextErrors: Errors = {} if (!name.trim()) nextErrors.name = 'Le nom est requis.' if (!isValidEmail(email)) nextErrors.email = 'Une adresse courriel valide est requise.' @@ -47,6 +50,7 @@ function InquiryModal({ product, onClose }: InquiryModalProps) { return } + setSubmitting(true) setSubmitError('') const { error } = await supabase.from('inquiries').insert({ product_id: product.id, @@ -54,6 +58,7 @@ function InquiryModal({ product, onClose }: InquiryModalProps) { contact_email: email, contact_notes: notes, }) + setSubmitting(false) if (error) { setSubmitError(error.message) @@ -104,7 +109,7 @@ function InquiryModal({ product, onClose }: InquiryModalProps) {