import React, { useState } from "react"; import loginThumb from "../../../assets/images/auth-thumb.svg"; import googleLogo from "../../../assets/images/google-logo.svg"; import logo from "../../../assets/images/light-logo.png"; //logo-1.svg"; import titleShape from "../../../assets/images/shape/title-shape-two.svg"; import InputCom from "../../Helpers/Inputs/InputCom"; import { Link, useNavigate } from 'react-router-dom'; import usersService from "../../../services/UsersService"; // site api services export default function SignUp() { const navigate = useNavigate(); const userSignup = new usersService(); const [loading, setLoading] = useState(false) // For loading spinner const [errorMessage, setErrorMessage] = useState({ // For Displaying success or error message success: false, message: '' }) const [checked, setValue] = useState(false); const rememberMe = () => { setValue(!checked); }; // state for user inputed values const [userDetails, setUserDetails] = useState({ // username: '', email: '', password: '', confirm_password: '', firstname: '', lastname: '' }) const handleInputChange = ({target:{name, value}}) => { // function that listens to input change setUserDetails(prev => { return {...prev, [name]:value} }) } const handleUserSignup = async () => { // handles input validation and submits to api call setErrorMessage({ // resets the error message to empty string success: false, message: '' }) setLoading(true) // Sets loading spinner let userInfo = {...userDetails} // assigns userDetails to be user information let {email, password, confirm_password, firstname, lastname} = userInfo if(!email || !password || !confirm_password || !firstname || !lastname){ // checks if any field is empty setLoading(false) setErrorMessage({ success: false, message: 'Please Fill all inputs' }) return } //checks if email is a valid email address let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/; if (regEx.test(email) == false) { setLoading(false) setErrorMessage({ success: false, message: 'Please Input a valid email; e.g: text@gmail.com' }) return } if(password != confirm_password){ //checks if password matches confirm password setLoading(false) setErrorMessage({ success: false, message: 'Password do not match' }) return } //checks if password is matches alphanumeric with at least one uppercase letter // let PwdRegEx = /[A-Z]/; if (/[A-Z]/.test(password) == false) { setLoading(false) setErrorMessage({ success: false, message: 'Password must contain at least one uppercase character; e.g: Text123' }) return } userInfo.username = email // assigns email as username also userInfo.mode = 'START' // assigns mode as START delete userInfo.confirm_password // deletes confrim password before making API call try { const res = await userSignup.signupUser(userInfo); if(res.status != 200){ setLoading(false) setErrorMessage({ success: false, message: 'Could not create account try again later' }) return } if(res.status == 200){ if(res.data.status < 0) { // when resquest is successful but status is not 1 setLoading(false) setErrorMessage({ success: false, message: 'unable to create account' }) return } // if request is successful and status is 1 proceed setErrorMessage({ success: true, message: 'Account created successfully' }) localStorage.setItem('uuid', res.data.uuid) // Stores the user UUID to localstorage localStorage.setItem('username', email) // Stores the user UUID to localstorage setTimeout(()=>{ setLoading(false) navigate("/verify-signup", { replace: true }) }, 1000) } } catch (error) { setLoading(false) setErrorMessage({ success: false, message: 'Opps! something went wrong, Try agian later' }) } } return ( <>
{/*
logo
*/}
{/*login-thumb */}

Welcome to myFit

Create Account

shape
I agree all terms and condition in myFit.
{errorMessage.message != '' &&

{errorMessage.message}

} {/* navigate("/verify-you")} className="w-full border border-light-purple dark:border-[#5356fb29] rounded-[50px] h-[58px] flex justify-center bg-[#FAFAFA] dark:bg-[#11131F] items-center" > google logo Sign Up with Google */}

Already have account? Log In

); }