diff --git a/.env b/.env index f58ba9f..bb7488f 100644 --- a/.env +++ b/.env @@ -18,7 +18,7 @@ REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/svs/user" #"https://devapi.mermsemr.com/en/desktop/api/v2/myfituser" REACT_APP_SESSION_EXPIRE_MINUTES=300000 -REACT_APP_SESSION_EXPIRE_CHECKER=60000 +REACT_APP_SESSION_EXPIRE_CHECKER=300000 REACT_APP_LOGIN_ERROR_TIMEOUT=7000 REACT_APP_SIGNUP_ERROR_TIMEOUT=7000 diff --git a/src/components/AuthPages/Login/index.jsx b/src/components/AuthPages/Login/index.jsx index 7d18634..bcb294c 100644 --- a/src/components/AuthPages/Login/index.jsx +++ b/src/components/AuthPages/Login/index.jsx @@ -9,7 +9,13 @@ import usersService from "../../../services/UsersService"; import InputCom from "../../Helpers/Inputs/InputCom"; import AuthLayout from "../AuthLayout"; +import { useDispatch, useSelector } from "react-redux"; +import {updateUserDetails} from '../../../store/UserDetails' + export default function Login() { + + const dispatch = useDispatch() + const [checked, setValue] = useState(false); const [loginLoading, setLoginLoading] = useState(false); @@ -51,21 +57,13 @@ export default function Login() { //debugger; // if (email === "support@mermsemr.com") { if (loginResult.data.status > 0 && loginResult.data.internal_return == 100 && loginResult.data.session != '') { // just for a start - localStorage.setItem("email", `${loginResult.data.email}`); localStorage.setItem("member_id", `${loginResult.data.member_id}`); localStorage.setItem("uid", `${loginResult.data.uid}`); localStorage.setItem("session_token", `${loginResult.data.session}`); - localStorage.setItem("added", `${loginResult.data.added}`); - localStorage.setItem("city", `${loginResult.data.city}`); - localStorage.setItem("country", `${loginResult.data.country}`); - localStorage.setItem("firstname", `${loginResult.data.firstname}`); - localStorage.setItem("last_login", `${loginResult.data.last_login}`); - localStorage.setItem("lastname", `${loginResult.data.lastname}`); - localStorage.setItem("state", `${loginResult.data.state}`); - localStorage.setItem("zip_code", `${loginResult.data.zip_code}`); localStorage.setItem("session", `${loginResult.data.session}`); setLoginLoading(true); // userApi.getUserReminders(); //testing + dispatch(updateUserDetails(loginResult.data)) setTimeout(() => { navigate("/", { replace: true }); setLoginLoading(false); diff --git a/src/components/AuthPages/VerifyLink/index.jsx b/src/components/AuthPages/VerifyLink/index.jsx index 8d5d8cb..1b28c87 100644 --- a/src/components/AuthPages/VerifyLink/index.jsx +++ b/src/components/AuthPages/VerifyLink/index.jsx @@ -1,4 +1,4 @@ -import { useState, useLayoutEffect, useCallback } from "react"; +import { useState, useEffect, useCallback } from "react"; import { useLocation, Link, useNavigate } from "react-router-dom"; import AuthLayout from "../AuthLayout"; import InputCom from "../../Helpers/Inputs/InputCom"; @@ -28,34 +28,6 @@ export default function VerifyLink() { setPassword(e.target.value); }; - // for verifying the incoming verification link and render the correct component - const verifyEmail = useCallback(async (code) => { - try { - const verifyRes = await userApi.verifyEmail(code); - if (verifyRes.status === 200) { - let { data } = verifyRes; - - if ( - data && - data.internal_return >= 0 && - data.status_text === "Link Verfied" - ) { - setPageLoader(false); - } else { - setPageLoader(false); - setLinkSuccess(false); - } - } - } catch (error) { - setPageLoader(false); - setLinkSuccess(false); - throw new Error(error); - } - }, []); - - // delay verify requests by 10000ms - const debouncedEmail = debounce(verifyEmail, 1000); - // if verification is okay. set a complete signup form const completeSignup = async () => { if (email === "" && password === "") { @@ -85,14 +57,6 @@ export default function VerifyLink() { localStorage.setItem("email", `${data?.email}`); localStorage.setItem("member_id", `${data?.member_id}`); localStorage.setItem("session_token", `${data?.session}`); - localStorage.setItem("added", `${data?.added}`); - localStorage.setItem("city", `${data?.city}`); - localStorage.setItem("country", `${data?.country}`); - localStorage.setItem("firstname", `${data?.firstname}`); - localStorage.setItem("last_login", `${data?.last_login}`); - localStorage.setItem("lastname", `${data?.lastname}`); - localStorage.setItem("state", `${data?.state}`); - localStorage.setItem("zip_code", `${data?.zip_code}`); localStorage.setItem("session", `${data?.session}`); navigate("/", { replace: true }); @@ -118,9 +82,37 @@ export default function VerifyLink() { } }; - useLayoutEffect(() => { + // for verifying the incoming verification link and render the correct component + const verifyEmail = useCallback(async (code) => { + try { + const verifyRes = await userApi.verifyEmail(code); + if (verifyRes.status === 200) { + let { data } = verifyRes; + + if ( + data && + data.internal_return >= 0 && + data.status_text === "Link Verfied" + ) { + setPageLoader(false); + } else { + setPageLoader(false); + setLinkSuccess(false); + } + } + } catch (error) { + setPageLoader(false); + setLinkSuccess(false); + throw new Error(error); + } + }, []); + + // delay verify requests by 10000ms + const debouncedEmail = debounce(verifyEmail, 1000); + + useEffect(() => { debouncedEmail(token); - }); + }, []); return ( <> diff --git a/src/components/Home/Hero.jsx b/src/components/Home/Hero.jsx index 06f0859..b65c06b 100644 --- a/src/components/Home/Hero.jsx +++ b/src/components/Home/Hero.jsx @@ -9,6 +9,7 @@ import slider3 from "../../assets/images/slider-3.jpg"; import CountDown from "../Helpers/CountDown"; import SliderCom from "../Helpers/SliderCom"; import HomeSliders from "./HomeSliders"; +import { useSelector } from "react-redux"; export default function Hero({ className }) { const settings = { @@ -20,6 +21,8 @@ export default function Hero({ className }) { }; const sildeData =null; const [addFavorite, setValue] = useState(false); + + const {userDetails} = useSelector((state) => state?.userDetails) const favoriteHandler = () => { if (!addFavorite) { setValue(true); @@ -29,6 +32,12 @@ export default function Hero({ className }) { toast.warn("Remove to Favorite List"); } }; + + let loginDate = userDetails?.last_login.split(' ')[0] + let {firstname, lastname, email, profile_pic} = userDetails + let userEmail = email.split('@')[0] + console.log(userEmail) + return (
- Last Login : 10-10-2026 + Last Login : {loginDate}
{/* user */}
- +

- Brokln Simons + {`${firstname} ${lastname}`}

-

@broklinslam_75

+

@{userEmail}

{/* countdown */} diff --git a/src/components/Home/index.jsx b/src/components/Home/index.jsx index d11733a..89c4872 100644 --- a/src/components/Home/index.jsx +++ b/src/components/Home/index.jsx @@ -10,6 +10,8 @@ import UpdateTable from "./UpdateTable"; import HomeTaskDisplay from "./HomeTaskDisplay"; import UsersService from "../../services/UsersService"; import usersService from "../../services/UsersService"; +import { useSelector } from "react-redux"; + export default function Home() { const trending = datas.datas; @@ -18,10 +20,12 @@ export default function Home() { const userApi = new usersService(); const homeData = userApi.getHomeDate(); + const {userDetails} = useSelector((state) => state?.userDetails) + return (
- + {/* */} +
+ // wrenchboard + //
+ : + !isLogin.status ? + + : + (children || ) + ) }; -export default AuthRoute; +export default AuthRoute; \ No newline at end of file diff --git a/src/store/UserDetails.js b/src/store/UserDetails.js new file mode 100644 index 0000000..477f2a3 --- /dev/null +++ b/src/store/UserDetails.js @@ -0,0 +1,20 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const initialState = { + userDetails: {} +}; + +export const userSlice = createSlice({ + name: "userDetails", + initialState, + reducers: { + updateUserDetails: (state,payload) => { + state.userDetails = {...payload.payload} + }, + }, +}); + +// Action creators are generated for each case reducer function +export const { updateUserDetails } = userSlice.actions; + +export default userSlice.reducer; \ No newline at end of file diff --git a/src/store/store.js b/src/store/store.js index 77bf113..deefd7d 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -1,8 +1,11 @@ import { configureStore } from "@reduxjs/toolkit"; import drawerReducer from "./drawer"; +import userDetailReducer from "./UserDetails"; + export default configureStore({ reducer: { drawer: drawerReducer, + userDetails: userDetailReducer, }, -}); +}); \ No newline at end of file