Newer
Older
geekbrain_io_web / app / static / js / main.js
document.addEventListener('DOMContentLoaded', () => {
    const form = document.getElementById('contact-form');
    if (!form) return;

    form.addEventListener('submit', async (e) => {
        e.preventDefault();

        // Basic frontend validation
        const name = form.name.value.trim();
        const email = form.email.value.trim();
        const subject = form.subject.value.trim();
        const message = form.message.value.trim();
        const recaptchaResponse = form['g-recaptcha-response'].value;

        if (!name || !email || !subject || !message) {
            alert('Tous les champs sont obligatoires.');
            return;
        }

        if (!recaptchaResponse) {
            alert('Veuillez valider le reCAPTCHA.');
            return;
        }

        // Submit via fetch
        try {
            const response = await fetch('/contact', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({
                    name, email, subject, message,
                    recaptcha_token: recaptchaResponse
                })
            });

            const data = await response.json();
            if (data.success) {
                alert('Message envoyé avec succès!');
                form.reset();
                if (typeof grecaptcha !== 'undefined') {
                    grecaptcha.reset();
                }
            } else {
                alert('Erreur: ' + (data.message || 'Envoi échoué'));
            }
        } catch (err) {
            alert('Erreur réseau: ' + err.message);
        }
    });
});