import { getCsrfToken } from "next-auth/react"; import useTranslation from "next-translate/useTranslation"; import Head from "next/head"; import Breadcrumbs from "../../components/breadcrumbs"; import CookieBanner from "../../components/cookieBanner"; import Footer from "../../components/footer"; import Header from "../../components/header"; import ServiceBanner from "../../components/servicebanner"; import { useRouter } from "next/router"; import { useState, useEffect } from "react"; const SignIn = (props) => { let { t, lang } = useTranslation(); const router = useRouter(); const { query } = router; const { footerLinks, pages, csrfToken, callbackUrl } = props; const [formData, setFormData] = useState({ email: query.email || "", callbackUrl: "", csrfToken: "", }); const [submitForm, setSubmitForm] = useState(false); const [buttonDisabled, setButtonDisabled] = useState(false); const [response, setResponse] = useState(null); const handleInputChange = (e) => { const { name, value } = e.target; setFormData((prevState) => ({ ...prevState, [name]: value })); }; // useEffect(() => { // // Populate form fields if query params exist // if (query.email) // setFormData((prev) => ({ ...prev, email: query.email })); // if (query.email) { // handleSubmit(); // Trigger the form submission // } // }, [query]); // const handleSubmit = async () => { // setButtonDisabled(true); // Disable the submit button to avoid multiple submissions // // Wait a short moment before programmatically submitting the form // setTimeout(() => { // const form = document.getElementById("signin-form"); // Get form by ID // if (form) { // form.submit(); // Submit the form // } // }, 500); // Short delay to ensure form is populated before submission // }; const handleSubmit = async (event) => { event.preventDefault(); setButtonDisabled(true); // Disable the submit button to avoid multiple submissions try { const res = await fetch("/api/auth/signin/emailAPI", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(formData), }); const data = await res.json(); setResponse(data); // Update response state } catch (error) { console.error("Error submitting the form:", error); } }; // Trigger form submission automatically when data is ready useEffect(() => { // Check if email exists and form data is populated if (query.email && !response) { setFormData((prevState) => ({ ...prevState, csrfToken: csrfToken, callbackUrl: callbackUrl || prevState.callbackUrl, // Ensure callback URL is set })); } }, [query.email, csrfToken, callbackUrl, response]); useEffect(() => { // Automatically submit the form when data is ready if (formData.email && formData.csrfToken && !response) { handleSubmit(new Event("submit")); } }, [formData, response]); // Handle redirection after form submission based on response useEffect(() => { if (response && response.url) { // Redirect to the URL in the response router.push(response.url); } }, [response, router]); return (