From 34fc3afb1e989df3e12e9e8686fbb0af11912c43 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Fri, 19 Jan 2024 18:08:35 +0530 Subject: [PATCH] enable automatic redirect to rememberd url after login --- apps/OpenSign/src/App.js | 116 +++--------------- apps/OpenSign/src/layout/HomeLayout.js | 71 +++++++---- apps/OpenSign/src/primitives/ValidateRoute.js | 6 +- apps/OpenSign/src/routes/Dashboard.js | 2 +- apps/OpenSign/src/routes/Login.js | 41 +++---- apps/OpenSign/src/routes/Pgsignup.js | 23 ++-- apps/OpenSign/src/routes/PlanSubscriptions.js | 27 +--- 7 files changed, 104 insertions(+), 182 deletions(-) diff --git a/apps/OpenSign/src/App.js b/apps/OpenSign/src/App.js index 3e0119d85..deb9b19f6 100644 --- a/apps/OpenSign/src/App.js +++ b/apps/OpenSign/src/App.js @@ -7,7 +7,7 @@ import Signup from "./routes/Signup"; import Form from "./routes/Form"; import Report from "./routes/Report"; import Dashboard from "./routes/Dashboard"; -import PlanSubscriptions from "./routes/PlanSubscriptions"; +import Subscriptions from "./routes/PlanSubscriptions"; import HomeLayout from "./layout/HomeLayout"; import UserProfile from "./routes/UserProfile"; import PageNotFound from "./routes/PageNotFound"; @@ -60,112 +60,30 @@ function App() { ) : ( - - - - } - /> - - - - } - /> + }> + } /> + } /> + } /> } /> {process.env.REACT_APP_ENABLE_SUBSCRIPTION && ( <> } /> - } - /> + } /> )} - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - -
- - } - /> - - - - } - /> - - - - } - /> - - - - - } - /> - - - - } - /> + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> - {/* } /> */} )} diff --git a/apps/OpenSign/src/layout/HomeLayout.js b/apps/OpenSign/src/layout/HomeLayout.js index a0ca72170..5fbf2f84f 100644 --- a/apps/OpenSign/src/layout/HomeLayout.js +++ b/apps/OpenSign/src/layout/HomeLayout.js @@ -8,15 +8,16 @@ import axios from "axios"; import { useSelector } from "react-redux"; import Parse from "parse"; import ModalUi from "../primitives/ModalUi"; -import { useNavigate } from "react-router-dom"; +import { useNavigate, useLocation, Outlet } from "react-router-dom"; -const HomeLayout = ({ children }) => { +const HomeLayout = () => { const navigate = useNavigate(); + const location = useLocation(); const { width } = useWindowSize(); const [isOpen, setIsOpen] = useState(true); const arr = useSelector((state) => state.TourSteps); const [isUserValid, setIsUserValid] = useState(true); - + const [isLoader, setIsLoader] = useState(true); useEffect(() => { (async () => { try { @@ -27,6 +28,7 @@ const HomeLayout = ({ children }) => { }); if (user) { setIsUserValid(true); + setIsLoader(false); } else { setIsUserValid(false); } @@ -184,7 +186,7 @@ const HomeLayout = ({ children }) => { console.log("err ", err); } finally { localStorage.removeItem("accesstoken"); - navigate("/", { replace: true }); + navigate("/", { replace: true, state: { from: location } }); } }; return ( @@ -194,27 +196,48 @@ const HomeLayout = ({ children }) => { {isUserValid ? ( <> -
- - -
-
{children}
-
-
-
+ {isLoader ? ( +
+
-
- + ) : ( + <> +
+ + +
+
{}
+
+
+
+
+
+ + + )} ) : ( diff --git a/apps/OpenSign/src/primitives/ValidateRoute.js b/apps/OpenSign/src/primitives/ValidateRoute.js index 62202dfe6..9c4f01e07 100644 --- a/apps/OpenSign/src/primitives/ValidateRoute.js +++ b/apps/OpenSign/src/primitives/ValidateRoute.js @@ -1,7 +1,7 @@ import React, { useEffect } from "react"; import Parse from "parse"; - -const ValidateRoute = ({ children }) => { +import { Outlet } from "react-router-dom"; +const ValidateRoute = () => { useEffect(() => { (async () => { try { @@ -28,7 +28,7 @@ const ValidateRoute = ({ children }) => { localStorage.removeItem("accesstoken"); } }; - return
{children}
; + return
{}
; }; export default ValidateRoute; diff --git a/apps/OpenSign/src/routes/Dashboard.js b/apps/OpenSign/src/routes/Dashboard.js index 2bc3d9bc7..e381cf364 100644 --- a/apps/OpenSign/src/routes/Dashboard.js +++ b/apps/OpenSign/src/routes/Dashboard.js @@ -24,7 +24,7 @@ const Dashboard = (props) => { getDashboard(localStorage.getItem("PageLanding")); } } else { - navigate("/", { replace: true }); + navigate("/", { replace: true, state: { from: location } }); } // eslint-disable-next-line }, [id]); diff --git a/apps/OpenSign/src/routes/Login.js b/apps/OpenSign/src/routes/Login.js index b9584b243..53d349211 100644 --- a/apps/OpenSign/src/routes/Login.js +++ b/apps/OpenSign/src/routes/Login.js @@ -8,12 +8,13 @@ import axios from "axios"; import Title from "../components/Title"; import GoogleSignInBtn from "../components/LoginGoogle"; // import LoginFacebook from "../components/LoginFacebook"; -import { NavLink, useNavigate } from "react-router-dom"; +import { NavLink, useNavigate, useLocation } from "react-router-dom"; import login_img from "../assets/images/login_img.svg"; import { useWindowSize } from "../hook/useWindowSize"; function Login(props) { const navigate = useNavigate(); + const location = useLocation(); const { width } = useWindowSize(); const [state, setState] = useState({ email: "", @@ -132,6 +133,9 @@ function Login(props) { `${localStorage.getItem("_appName")}_appeditor` ) { userSettings.forEach(async (element) => { + const redirectUrl = + location?.state?.from || + `/${element.pageType}/${element.pageId}`; if (element.role === _currentRole) { let _role = _currentRole.replace( `${localStorage.getItem("_appName")}_`, @@ -260,9 +264,8 @@ function Login(props) { localStorage.removeItem( "userDetails" ); - navigate( - `/${element.pageType}/${element.pageId}` - ); + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); } else { navigate(`/subscription`, { replace: true @@ -274,9 +277,8 @@ function Login(props) { }); } } else { - navigate( - `/${element.pageType}/${element.pageId}` - ); + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); } } } else { @@ -313,9 +315,8 @@ function Login(props) { }); } } else { - navigate( - `/${element.pageType}/${element.pageId}` - ); + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); } } }, @@ -462,6 +463,9 @@ function Login(props) { `${localStorage.getItem("_appName")}_appeditor` ) { userSettings.forEach(async (element) => { + const redirectUrl = + location?.state?.from || + `/${element.pageType}/${element.pageId}`; if (element.role === _currentRole) { let _role = _currentRole.replace( `${localStorage.getItem("_appName")}_`, @@ -569,9 +573,7 @@ function Login(props) { if (billingDate) { if (billingDate > new Date()) { localStorage.removeItem("userDetails"); - navigate( - `/${element.pageType}/${element.pageId}` - ); + navigate(redirectUrl); } else { navigate(`/subscription`, { replace: true @@ -581,9 +583,7 @@ function Login(props) { navigate(`/subscription`, { replace: true }); } } else { - navigate( - `/${element.pageType}/${element.pageId}` - ); + navigate(redirectUrl); } } } else { @@ -599,9 +599,8 @@ function Login(props) { if (billingDate) { if (billingDate > new Date()) { localStorage.removeItem("userDetails"); - navigate( - `/${element.pageType}/${element.pageId}` - ); + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); } else { navigate(`/subscription`, { replace: true }); } @@ -609,9 +608,7 @@ function Login(props) { navigate(`/subscription`, { replace: true }); } } else { - navigate( - `/${element.pageType}/${element.pageId}` - ); + navigate(redirectUrl); } } }, diff --git a/apps/OpenSign/src/routes/Pgsignup.js b/apps/OpenSign/src/routes/Pgsignup.js index af4cc0108..f3d12437d 100644 --- a/apps/OpenSign/src/routes/Pgsignup.js +++ b/apps/OpenSign/src/routes/Pgsignup.js @@ -5,7 +5,7 @@ import axios from "axios"; import { fetchAppInfo, showTenantName } from "../redux/actions/index"; import { connect } from "react-redux"; import Title from "../components/Title"; -import { useNavigate } from "react-router-dom"; +import { useNavigate, useLocation } from "react-router-dom"; const appId = localStorage.getItem("AppID12"); const server = localStorage.getItem("BaseUrl12"); @@ -13,6 +13,7 @@ Parse.serverURL = server; Parse.initialize(appId); const PgSignUp = (props) => { const navigate = useNavigate(); + const location = useLocation(); const [parseBaseUrl] = useState(localStorage.getItem("BaseUrl12")); const [parseAppId] = useState(localStorage.getItem("AppID12")); const [formData, setFormData] = useState({ @@ -187,7 +188,7 @@ const PgSignUp = (props) => { console.log("err ", error); if (error.message === "Account already exists for this username.") { alert("Account already exists!"); - navigate("/"); + navigate("/", { replace: true }); } else { setIsLoader(false); alert("Something went wrong, please try again later!"); @@ -351,7 +352,7 @@ const PgSignUp = (props) => { element.pageType ); setIsLoader(false); - navigate("/"); + navigate("/", { replace: true }); } else { extendedInfo.forEach((x) => { if (x.TenantId) { @@ -389,9 +390,12 @@ const PgSignUp = (props) => { ); setIsLoader(false); alert("Registered user successfully"); - navigate( - `/${element.pageType}/${element.pageId}` - ); + const redirectUrl = + location?.state?.from || + `/${element.pageType}/${element.pageId}`; + + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); } } else { alert("Registered user successfully"); @@ -402,7 +406,12 @@ const PgSignUp = (props) => { ); localStorage.setItem("pageType", element.pageType); setIsLoader(false); - navigate(`/${element.pageType}/${element.pageId}`); + const redirectUrl = + location?.state?.from || + `/${element.pageType}/${element.pageId}`; + + // Redirect to the appropriate URL after successful login + navigate(redirectUrl); } }, (error) => { diff --git a/apps/OpenSign/src/routes/PlanSubscriptions.js b/apps/OpenSign/src/routes/PlanSubscriptions.js index 00ad2fa62..ceb764a3f 100644 --- a/apps/OpenSign/src/routes/PlanSubscriptions.js +++ b/apps/OpenSign/src/routes/PlanSubscriptions.js @@ -39,7 +39,7 @@ const PlanSubscriptions = () => { setIsLoader(false); setYearlyVisible(false); } else { - navigate("/"); + navigate("/", { replace: true }); } // eslint-disable-next-line }, []); @@ -78,31 +78,6 @@ const PlanSubscriptions = () => { id="monthlyPlans" className={`${yearlyVisible ? "none" : "block my-2"}`} > - {/*
-
    -
  • - -
  • -
  • - -
  • -
-
*/}
    {plansArr.map((item) => (