"use client"; import React, { useState, useRef, useEffect } from "react"; import SimpleReactValidator from "simple-react-validator"; import ReCAPTCHA from "react-google-recaptcha"; import axios from "axios"; import { useTranslation } from "next-i18next"; export default function AutoPopup() { const [show, setShow] = useState(false); useEffect(() => { const timer = setTimeout(() => setShow(true), 10000); // Show after 10s return () => clearTimeout(timer); }, []); 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 { await axios.post("https://mailserver.metatronnest.com/send", emailPayload, { headers: { "Content-Type": "application/json" }, }); alert(t("form.successMessage")); setShow(false) 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 })); } }; if (!show) return null; return ( <> {/* Backdrop */}
setShow(false)} // click on backdrop closes modal >
{/* Popup */}

{t('contactInfo.pageTitle')}

{t('contactInfo.pageSubTitle')}

{validator.message("name", forms.name, "required|alpha_space")}
{validator.message("email", forms.email, "required|email")}
{validator.message("phone", forms.phone, "required|phone")}
{validator.message("service", forms.service, "required")}
{validator.message("message", forms.message, "required")}
{!recaptchaToken && (
{t("form.requiredMessages.recaptcha")}
)}

{t('contactInfo.callText')}

); }