mirror of
https://github.com/Kingsrook/qqq-frontend-material-dashboard.git
synced 2025-07-17 21:00:45 +00:00
CE-1123 store values in localStorage from backend from manageSession call; add googleAnalytics utils & function to recordAnalytics
This commit is contained in:
48
src/App.tsx
48
src/App.tsx
@ -33,12 +33,8 @@ import CssBaseline from "@mui/material/CssBaseline";
|
|||||||
import Icon from "@mui/material/Icon";
|
import Icon from "@mui/material/Icon";
|
||||||
import {ThemeProvider} from "@mui/material/styles";
|
import {ThemeProvider} from "@mui/material/styles";
|
||||||
import {LicenseInfo} from "@mui/x-license-pro";
|
import {LicenseInfo} from "@mui/x-license-pro";
|
||||||
import jwt_decode from "jwt-decode";
|
|
||||||
import React, {JSXElementConstructor, Key, ReactElement, useEffect, useState,} from "react";
|
|
||||||
import {useCookies} from "react-cookie";
|
|
||||||
import {Navigate, Route, Routes, useLocation, useSearchParams,} from "react-router-dom";
|
|
||||||
import {Md5} from "ts-md5/dist/md5";
|
|
||||||
import CommandMenu from "CommandMenu";
|
import CommandMenu from "CommandMenu";
|
||||||
|
import jwt_decode from "jwt-decode";
|
||||||
import QContext from "QContext";
|
import QContext from "QContext";
|
||||||
import Sidenav from "qqq/components/horseshoe/sidenav/SideNav";
|
import Sidenav from "qqq/components/horseshoe/sidenav/SideNav";
|
||||||
import theme from "qqq/components/legacy/Theme";
|
import theme from "qqq/components/legacy/Theme";
|
||||||
@ -53,8 +49,13 @@ import EntityEdit from "qqq/pages/records/edit/RecordEdit";
|
|||||||
import RecordQuery from "qqq/pages/records/query/RecordQuery";
|
import RecordQuery from "qqq/pages/records/query/RecordQuery";
|
||||||
import RecordDeveloperView from "qqq/pages/records/view/RecordDeveloperView";
|
import RecordDeveloperView from "qqq/pages/records/view/RecordDeveloperView";
|
||||||
import RecordView from "qqq/pages/records/view/RecordView";
|
import RecordView from "qqq/pages/records/view/RecordView";
|
||||||
|
import GoogleAnalyticsUtils from "qqq/utils/GoogleAnalyticsUtils";
|
||||||
import Client from "qqq/utils/qqq/Client";
|
import Client from "qqq/utils/qqq/Client";
|
||||||
import ProcessUtils from "qqq/utils/qqq/ProcessUtils";
|
import ProcessUtils from "qqq/utils/qqq/ProcessUtils";
|
||||||
|
import React, {JSXElementConstructor, Key, ReactElement, useEffect, useState,} from "react";
|
||||||
|
import {useCookies} from "react-cookie";
|
||||||
|
import {Navigate, Route, Routes, useLocation, useSearchParams,} from "react-router-dom";
|
||||||
|
import {Md5} from "ts-md5/dist/md5";
|
||||||
|
|
||||||
|
|
||||||
const qController = Client.getInstance();
|
const qController = Client.getInstance();
|
||||||
@ -160,7 +161,7 @@ export default function App()
|
|||||||
if (shouldStoreNewToken(accessToken, lsAccessToken))
|
if (shouldStoreNewToken(accessToken, lsAccessToken))
|
||||||
{
|
{
|
||||||
console.log("Sending accessToken to backend, requesting a sessionUUID...");
|
console.log("Sending accessToken to backend, requesting a sessionUUID...");
|
||||||
const newSessionUuid = await qController.manageSession(accessToken, null);
|
const {uuid: newSessionUuid, values} = await qController.manageSession(accessToken, null);
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// the request to the backend should send a header to set the cookie, so we don't need to do it ourselves. //
|
// the request to the backend should send a header to set the cookie, so we don't need to do it ourselves. //
|
||||||
@ -168,6 +169,7 @@ export default function App()
|
|||||||
// setCookie(SESSION_UUID_COOKIE_NAME, newSessionUuid, {path: "/"});
|
// setCookie(SESSION_UUID_COOKIE_NAME, newSessionUuid, {path: "/"});
|
||||||
|
|
||||||
localStorage.setItem("accessToken", accessToken);
|
localStorage.setItem("accessToken", accessToken);
|
||||||
|
localStorage.setItem("sessionValues", JSON.stringify(values));
|
||||||
console.log("Got new sessionUUID from backend, and stored new accessToken");
|
console.log("Got new sessionUUID from backend, and stored new accessToken");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -575,7 +577,7 @@ export default function App()
|
|||||||
console.error(e);
|
console.error(e);
|
||||||
if (e instanceof QException)
|
if (e instanceof QException)
|
||||||
{
|
{
|
||||||
if ((e as QException).status === "401")
|
if ((e as QException).status === 401)
|
||||||
{
|
{
|
||||||
console.log("Exception is a QException with status = 401. Clearing some of localStorage & cookies");
|
console.log("Exception is a QException with status = 401. Clearing some of localStorage & cookies");
|
||||||
qController.clearAuthenticationMetaDataLocalStorage();
|
qController.clearAuthenticationMetaDataLocalStorage();
|
||||||
@ -654,7 +656,7 @@ export default function App()
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const [pageHeader, setPageHeader] = useState("" as string | JSX.Element);
|
const [pageHeader, setPageHeaderState] = useState("" as string | JSX.Element);
|
||||||
const [accentColor, setAccentColor] = useState("#0062FF");
|
const [accentColor, setAccentColor] = useState("#0062FF");
|
||||||
const [accentColorLight, setAccentColorLight] = useState("#C0D6F7")
|
const [accentColorLight, setAccentColorLight] = useState("#C0D6F7")
|
||||||
const [tableMetaData, setTableMetaData] = useState(null);
|
const [tableMetaData, setTableMetaData] = useState(null);
|
||||||
@ -663,6 +665,35 @@ export default function App()
|
|||||||
const [keyboardHelpOpen, setKeyboardHelpOpen] = useState(false);
|
const [keyboardHelpOpen, setKeyboardHelpOpen] = useState(false);
|
||||||
const [helpHelpActive] = useState(queryParams.has("helpHelp"));
|
const [helpHelpActive] = useState(queryParams.has("helpHelp"));
|
||||||
|
|
||||||
|
const [googleAnalyticsUtils] = useState(new GoogleAnalyticsUtils());
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
function setPageHeader(header: string | JSX.Element)
|
||||||
|
{
|
||||||
|
setPageHeaderState(header);
|
||||||
|
if(typeof header == "string")
|
||||||
|
{
|
||||||
|
recordAnalytics(header)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
recordAnalytics("Title not available")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
function recordAnalytics(title: string)
|
||||||
|
{
|
||||||
|
googleAnalyticsUtils.recordAnalytics(location, title)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
||||||
appRoutes && (
|
appRoutes && (
|
||||||
@ -682,6 +713,7 @@ export default function App()
|
|||||||
setTableProcesses: (tableProcesses: QProcessMetaData[]) => setTableProcesses(tableProcesses),
|
setTableProcesses: (tableProcesses: QProcessMetaData[]) => setTableProcesses(tableProcesses),
|
||||||
setDotMenuOpen: (dotMenuOpent: boolean) => setDotMenuOpen(dotMenuOpent),
|
setDotMenuOpen: (dotMenuOpent: boolean) => setDotMenuOpen(dotMenuOpent),
|
||||||
setKeyboardHelpOpen: (keyboardHelpOpen: boolean) => setKeyboardHelpOpen(keyboardHelpOpen),
|
setKeyboardHelpOpen: (keyboardHelpOpen: boolean) => setKeyboardHelpOpen(keyboardHelpOpen),
|
||||||
|
recordAnalytics: recordAnalytics,
|
||||||
pathToLabelMap: pathToLabelMap,
|
pathToLabelMap: pathToLabelMap,
|
||||||
branding: branding
|
branding: branding
|
||||||
}}>
|
}}>
|
||||||
|
@ -47,6 +47,11 @@ interface QContext
|
|||||||
tableProcesses?: QProcessMetaData[];
|
tableProcesses?: QProcessMetaData[];
|
||||||
setTableProcesses?: (tableProcesses: QProcessMetaData[]) => void;
|
setTableProcesses?: (tableProcesses: QProcessMetaData[]) => void;
|
||||||
|
|
||||||
|
///////////////////////////////////////////
|
||||||
|
// function to record an analytics event //
|
||||||
|
///////////////////////////////////////////
|
||||||
|
recordAnalytics?: (title: string) => void;
|
||||||
|
|
||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
// constants - no setters needed //
|
// constants - no setters needed //
|
||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
|
Reference in New Issue
Block a user