import React, { useState, FormEvent, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { LogoIconLarge } from "../components/icons/Logo"; import { EyeIcon } from "../components/icons/ExportCommonIcons"; import { useLoadingProgress, useOrganization, useUserName, } from "../store/builder/store"; import { signInApi } from "../services/factoryBuilder/signInSignUp/signInApi"; import { signUpApi } from "../services/factoryBuilder/signInSignUp/signUpApi"; import FingerprintJS from "@fingerprintjs/fingerprintjs"; import { recentlyViewed } from "../services/dashboard/recentlyViewed"; import { getUserData } from "../components/Dashboard/functions/getUserData"; const UserAuth: React.FC = () => { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(""); const [isSignIn, setIsSignIn] = useState(true); const { userName, setUserName } = useUserName(); const { setOrganization } = useOrganization(); const { setLoadingProgress } = useLoadingProgress(); const [fingerprint, setFingerprint] = useState(""); const navigate = useNavigate(); const initializeFingerprint = async () => { const fp = await FingerprintJS.load(); const result = await fp.get(); setFingerprint(result.visitorId); // Set the fingerprint }; useEffect(() => { initializeFingerprint(); }, []) const { userId, organization } = getUserData(); const [navigateToProject, setNavigateToProject] = useState(); console.log('navigateToProject: ', navigateToProject); const fetchRecentProjects = async () => { try { const projects = await recentlyViewed(organization, userId); console.log("RecentlyViewed: ", Object.values(projects.RecentlyViewed)[0] ); if (Object.values(projects.RecentlyViewed).length > 0) { const firstId = (Object.values(projects?.RecentlyViewed || {})[0] as any)?._id; setNavigateToProject(firstId) } } catch (error) { console.error("Error fetching recent projects:", error); } }; useEffect(() => { fetchRecentProjects(); }, [navigateToProject]); const handleLogin = async (e: FormEvent) => { e.preventDefault(); const organization = email.split("@")[1].split(".")[0]; try { const res = await signInApi(email, password, organization, fingerprint); if (res.message.message === "login successfull") { setError(""); setOrganization(organization); setUserName(res.message.name); // console.log(' res.userId: ', res.message.userId); localStorage.setItem("userId", res.message.userId); localStorage.setItem("email", res.message.email); localStorage.setItem("userName", res.message.name); localStorage.setItem("token", res.message.token); localStorage.setItem("refreshToken", res.message.refreshToken); try { const projects = await recentlyViewed(organization, res.message.userId); console.log("RecentlyViewed: ", Object.values(projects.RecentlyViewed)[0] ); if (Object.values(projects.RecentlyViewed).length > 0) { const firstId = (Object.values(projects?.RecentlyViewed || {})[0] as any)?._id; setLoadingProgress(1) navigate(`/${firstId}`) } else { if (res.message.isShare) { setLoadingProgress(1); // navigate("/Project"); navigate("/Dashboard"); } } } catch (error) { console.error("Error fetching recent projects:", error); } } else if (res.message === "User Not Found!!! Kindly signup...") { setError("Account not found"); } else if (res.message === "Already LoggedIn on another browser....Please logout!!!") { setError("Already logged in on another browser. Please logout first."); navigate("/"); setError("") // setError(""); // setOrganization(organization); // setUserName(res.ForceLogoutData.userName); // console.log(' res.userId: ', res.ForceLogoutData.userId); // localStorage.setItem("userId", res.ForceLogoutData.userId); // localStorage.setItem("email", res.ForceLogoutData.Email); // localStorage.setItem("userName", res.ForceLogoutData.userName); // localStorage.setItem("token", res.ForceLogoutData.token); // localStorage.setItem("refreshToken", res.ForceLogoutData.refreshToken); // if (res.ForceLogoutData.isShare) { // setLoadingProgress(1); // navigate("/Dashboard"); // } } } catch (error) { echo.error("Login failed"); } }; const handleRegister = async (e: FormEvent) => { e.preventDefault(); if (email && password && userName) { setError(""); try { const organization = email.split("@")[1].split(".")[0]; const res = await signUpApi(userName, email, password, organization); if (res.message === "New User created") { setIsSignIn(true); } if (res.message === "User already exists") { setError("User already exists"); } } catch (error) { echo.error("Register user failed"); } } else { setError("Please fill all the fields!"); } }; return (

Welcome to Dwinzo

{isSignIn ? ( <> Don’t have an account?{" "} setIsSignIn(false)} style={{ cursor: "pointer" }} > Register here! ) : ( <> Already have an account?{" "} setIsSignIn(true)} style={{ cursor: "pointer" }} > Login here! )}

{error &&
🛈 {error}
}
{!isSignIn && ( setUserName(e.target.value)} required /> )} setEmail(e.target.value)} required />
setPassword(e.target.value)} required />
{!isSignIn && (
I have read and agree to the terms of service
)}

By signing up for, or logging into, an account, you agree to our{" "} navigate("/privacy")} style={{ cursor: "pointer" }} > privacy policy {" "} &{" "} navigate("/terms")} style={{ cursor: "pointer" }} > terms of service {" "} whether you read them or not. You can also find these terms on our website.

); }; export default UserAuth;