import { useState, ChangeEvent, FormEvent } from "react"; import GmailIcon from "../../icons/gmail-icon"; import { StepProps } from "../../../../types/account-types"; type FormData = { firstName: string; lastName: string; email: string; appPassword: string; }; type FormErrors = { firstName: string; lastName: string; email: string; appPassword: string; }; export default function Step3({ stepCount }: StepProps) { // State to store form data const [formData, setFormData] = useState({ firstName: "", lastName: "", email: "", appPassword: "", }); const [errorMessage, setErrorMessage] = useState( "Account already exists.", ); const [errorMessageVisiblity, setErrorMessageVisiblity] = useState(false); const [successMessageVisiblity, setSuccessMessageVisiblity] = useState(false); const [formErrors, setFormErrors] = useState({ firstName: "", lastName: "", email: "", appPassword: "", }); // Function to validate email format const isValidEmail = (email: string) => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; // Function to validate form fields const validate = () => { let errors: FormErrors = { firstName: "", lastName: "", email: "", appPassword: "", }; let isValid = true; if (!formData.firstName) { errors.firstName = "First name is required"; isValid = false; } if (!formData.lastName) { errors.lastName = "Last name is required"; isValid = false; } if (!formData.email) { errors.email = "Email is required"; isValid = false; } else if (!isValidEmail(formData.email)) { errors.email = "Email is not valid"; isValid = false; } if (!formData.appPassword) { errors.appPassword = "App password is required"; isValid = false; } setFormErrors(errors); return isValid; }; // Handle form input const handleChange = (e: ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value, }); }; // Handle form subission const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setSuccessMessageVisiblity(false); setErrorMessageVisiblity(false); // Validate the form if (!validate()) return; try { const response = await fetch( wordpressPluginBoilerplate.apiUrl + "myplugin/v1/accounts/create", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(formData), }, ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); if (data.status) { if (data.status === "success") { setSuccessMessageVisiblity(true); setErrorMessageVisiblity(false); } if (data.status === "error") { setErrorMessageVisiblity(true); setSuccessMessageVisiblity(false); } } console.log(data); // Handle response or set form submission state } catch (error) { console.error("Error submitting form", error); } }; return ( <>
Connect Your Google Account
{successMessageVisiblity && (
Success! Accont has been created successfully.
)} {errorMessageVisiblity && (
Error! {errorMessage}
)}
{formErrors.firstName && (

{formErrors.firstName}

)}
{formErrors.lastName && (

{formErrors.lastName}

)}
{formErrors.email && (

{formErrors.email}

)} {formErrors.appPassword && (

{formErrors.appPassword}

)}
); }