"use client"; import React, { useState, useRef } from "react"; import SimpleReactValidator from "simple-react-validator"; import ReCAPTCHA from "react-google-recaptcha"; import axios from "axios"; import { useTranslation } from 'next-i18next'; const ContactForm = () => { const { t } = useTranslation("contact"); const subjectOptions = t("form.subjectOptions", { returnObjects: true }); const [forms, setForms] = useState({ name: "", email: "", service: "", phone: "", message: "", }); const [validator] = useState( new SimpleReactValidator({ className: "errorMessage", }) ); const recaptchaRef = useRef(null); const [recaptchaToken, setRecaptchaToken] = useState(null); const RECAPTCHA_SITEKEY = "6Lc5wKUrAAAAAKqIviSUY2PsqLQ8Bq8CJJaHFA_f"; const changeHandler = (e) => { const { name, value } = e.target; setForms({ ...forms, [name]: value }); if (validator.allValid() && recaptchaToken) { validator.hideMessages(); } else { validator.showMessages(); } }; const handleRecaptcha = (token) => { setRecaptchaToken(token); if (validator.allValid() && token) { validator.hideMessages(); } }; const submitHandler = async (e) => { e.preventDefault(); if (validator.allValid() && recaptchaToken) { validator.hideMessages(); const emailPayload = { name: forms.name, email: forms.email, phone: forms.phone, subject: forms.service, message: `service: ${forms.service}\n\nMessage:\n${forms.message}`, to: "info@janahanlaw.com", senderName: "Janahan Law", recaptchaToken: recaptchaToken, }; try { const response = await axios.post( "https://mailserver.metatronnest.com/send", emailPayload, { headers: { "Content-Type": "application/json" } } ); alert(t("form.successMessage")); setForms({ name: "", email: "", service: "", phone: "", message: "", }); validator.hideMessages(); if (recaptchaRef.current) { try { recaptchaRef.current.reset(); } catch (err) { } } setRecaptchaToken(null); } catch (err) { alert(t("form.failedMessage")); } } else { validator.showMessages(); setForms((prev) => ({ ...prev })); } }; return (
); }; export default ContactForm;