diff --git a/src/api/user.ts b/src/api/user.ts index 71ccf84..7c0a382 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -19,5 +19,5 @@ export const loginAPI = async (email: string, password: string) => { email, password, }); - response.data; + return response.data; }; diff --git a/src/components/LoginPage/LoginPage.tsx b/src/components/LoginPage/LoginPage.tsx index f9807de..0803ec5 100755 --- a/src/components/LoginPage/LoginPage.tsx +++ b/src/components/LoginPage/LoginPage.tsx @@ -1,16 +1,19 @@ import SpinnerLogin from "../SpinnerLogin"; -import React, { useEffect, useState } from "react"; -import env from "../../enviroment/envFrontEnd"; -import { getUserAPI } from "../../api/user"; +import React, { useEffect, useMemo, useState } from "react"; +import { getUserAPI, loginAPI } from "../../api/user"; import { useLocation, useNavigate } from "react-router-dom"; import { setUser } from "../../reducers/user"; import { useAppDispatch } from "../../hooks/store"; +import { capitalize } from "lodash"; +import AlertIcon from "../../icons/AlertIcon"; -const LoginPage = (props) => { +const LoginPage = () => { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [verifyPassword, setVerifyPassword] = useState(""); + const [mode, setMode] = useState<"login" | "create" | "reset">("login"); const [attemptingLogin, setAttemptingLogin] = useState(false); + const [loginExpired, setLoginExpired] = useState(false); const dispatch = useAppDispatch(); const location = useLocation(); const navigate = useNavigate(); @@ -35,10 +38,56 @@ const LoginPage = (props) => { } catch (e) { console.log("Login Error", e); setAttemptingLogin(false); + if (window.localStorage.getItem("hasPreviouslyLoggedIn")) { + setLoginExpired(true); + } } }; - const onSubmit = () => {}; + const login = async () => { + try { + const loginResponse = await loginAPI(email, password); + console.log("login response", loginResponse); + window.localStorage.setItem("hasPreviouslyLoggedIn", "true"); + dispatch(setUser(loginResponse)); + navigate("/home"); + } catch (e) { + console.log("Login Error", e); + } + }; + + const isSubmitDisabled = useMemo(() => { + switch (mode) { + case "login": + return !email || !password; + case "create": + return !email || !password || !verifyPassword; + case "reset": + return !email; + default: + return false; + } + }, [email, password, verifyPassword, mode]); + + const onSubmit = (e: any) => { + e.preventDefault(); + if (mode === "login") { + login(); + } + }; + + const headerTitle = useMemo(() => { + switch (mode) { + case "login": + return "Login to your account"; + case "create": + return "Create an account"; + case "reset": + return "Reset Password"; + default: + return "Login to your account"; + } + }, [mode]); useEffect(() => { attemptLoginWithToken(); @@ -58,103 +107,102 @@ const LoginPage = (props) => { return (