import React, { useEffect, useLayoutEffect, useState } from "react"; import { Link, useNavigate } from "react-router-dom"; import linkedInLogo from "../../../assets/images/Linkedin.png"; import appleLogo from "../../../assets/images/apple-black.svg"; import facebookLogo from "../../../assets/images/facebook-4.svg"; import googleLogo from "../../../assets/images/google-logo.svg"; import WrenchBoard from "../../../assets/images/wrenchboard.png"; import usersService from "../../../services/UsersService"; import InputCom from "../../Helpers/Inputs/InputCom"; import AuthLayout from "../AuthLayout"; // import { GoogleOAuthProvider } from '@react-oauth/google'; import { googleLogout, useGoogleLogin } from "@react-oauth/google"; import { useDispatch } from "react-redux"; import { updateUserDetails } from "../../../store/UserDetails"; export default function Login() { const dispatch = useDispatch(); let [loginType, setLoginType] = useState(''); const [checked, setValue] = useState(false); const [loginLoading, setLoginLoading] = useState(false); //login error state const [loginError, setLoginError] = useState(false); // for the catch error const [msgError, setMsgError] = useState(""); const rememberMe = () => { setValue(!checked); }; //FUNCTION TO DETERMINE/CHANGE LOGIN COMPONENT const handleLoginType = ({ target: { name } }) => { setLoginType(name); let currentDate = new Date(); let expirationDate = new Date(currentDate.getTime() + (24 * 60 * 60 * 1000)); // Convert the expiration date to the appropriate format let expirationDateString = expirationDate.toUTCString(); document.cookie = `loginType=${name}; expires=${expirationDateString}; path=/;`; }; // email const [email, setMail] = useState(""); const handleEmail = (e) => { setMail(e.target.value); }; // password const [password, setPassword] = useState(""); const handlePassword = (e) => { setPassword(e.target.value); }; const navigate = useNavigate(); const userApi = new usersService(); // FUNCTION TO HANDLE USER LOGIN const doLogin = ({ target: { name } }) => { setMsgError(""); setLoginError(false); setLoginLoading(true); let postData; // Post Data for API if (!email || !password) { setLoginLoading(false); setMsgError("Please fill all the fields"); setTimeout(() => { setMsgError(""); }, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT)); return; } if (name == "full") { // Post Data Info for normal Login postData = { username: email, password: password, sessionid: "STARTING", login_mode: 1100, action: 11025, }; } else if (name == "family") { // Post Data Info for family Login postData = { username: email, pin: password, sessionid: "20067A92714", login_mode: 1105, action: 11025, }; } else { setLoginLoading(false); setMsgError("Invalid Login Type. Consider refreshing the page"); setTimeout(() => { setMsgError(""); }, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT)); return; } userApi .logInUser(postData) .then((res) => { if (res.status != 200 || res.data.internal_return < 0) { // setMsgError("Wrong, email/password"); setLoginError(true); setLoginLoading(false); return; } localStorage.setItem("member_id", `${res.data.member_id}`); localStorage.setItem("uid", `${res.data.uid}`); localStorage.setItem("session_token", `${res.data.session}`); // localStorage.setItem("session", `${res.data.session}`); dispatch(updateUserDetails(res.data)); setTimeout(() => { navigate("/", { replace: true }); setLoginLoading(false); }, 2000); }) .catch((error) => { setMsgError("Unable to login, try again"); setLoginLoading(false); }) .finally(() => { setTimeout(() => { setLoginError(false); setMsgError(""); setLoginLoading(false); }, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT)); }); }; const googleLogin = useGoogleLogin({ flow: "auth-code", ux_mode: "redirect", redirect_uri: process.env.REACT_APP_GOOGLE_REDIRECT_URL, onSuccess: async (codeResponse) => { console.log("GOOGLE LOGIN GOOD --- ", codeResponse); }, onError: (errorResponse) => console.log(errorResponse), }); // In order to update the selected login type whenever the component renders // useEffect(() => { // Clear the loginType cookie if the user switches to loginfull // document.cookie ="loginType=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; // }, []); useLayoutEffect(()=>{ // checks the cookie in order to set the login type before components mounts // if(document.cookie.includes("loginType=family")){ // setLoginType('family') // }else if(document.cookie.includes("loginType=full")){ // setLoginType('full') // }else{ // setLoginType('full') // } function readCookie(cname) { // checks the cookie in order to set the login type before components mounts let name = cname + "="; let decoded_cookie = decodeURIComponent(document.cookie); let carr = decoded_cookie.split(';'); for(let i=0; i { setMail(""); setPassword(""); }, [loginType]); return ( <>
wrenchboard
{/*

Sign In to WrenchBoard

*/} New Here?{" "} Create an Account
{/* switch login component */}
{/* END of switch login component */} {/* for login component */} { loginType == 'full' ? ( //user login component
{loginError && (
Invalid username or password- Please{" "} reset your password {" "} or{" "} create a new account
)} {msgError && (
{msgError}
)}
) : ( // END of user login compoenent // family login compoenent
{loginError && (
Invalid username or password{" "} {/* reset your password {" "} or{" "} create a new account */}
)} {msgError && (
{msgError}
)}
) // END of family login compoenent } {/* END of login component */}
This site is protected by hCaptcha and the our Privacy Policy and Terms of Service apply.
); } const BrandBtn = ({ link, imgSrc, brand, onClick }) => { // const doGoogle = async () => { // alert("start google"); // }; // onSuccess: (codeResponse) => setUser(codeResponse), // const doGoogle = useGoogleLogin({ // onSuccess: (codeResponse) => console.log('Login onSuccess:', codeResponse), // onError: (error) => console.log('Login Failed:', error) // }); // const doApple = async () => { // alert("start apple"); // }; // const doFacebook = async () => { // alert("start facebook"); // }; return (
); };