Browse Source

resolve the TODOs

Sven Czarnian 2 years ago
parent
commit
8c6d6ae5e2
2 changed files with 12 additions and 7 deletions
  1. 2 3
      src/components/overview.tsx
  2. 10 4
      src/contexts/timecontext.tsx

+ 2 - 3
src/components/overview.tsx

@@ -4,7 +4,7 @@ import { Card } from 'primereact/card';
 import { DataTable } from 'primereact/datatable';
 import { Password } from 'primereact/password';
 import { AuthContext } from '../contexts';
-import { Auth } from '../services';
+import { Auth, Session } from '../services';
 import { BackendReturnStatus } from '../types';
 import { Column } from 'primereact/column';
 
@@ -18,9 +18,8 @@ export const Overview: React.FC = () => {
   const regenerateKey = async () => {
     Auth.refreshRadarScopeKey().then((status) => {
       if (status === BackendReturnStatus.Unauthorized) {
+        Session.setLastShownComponent('/overview');
         Auth.triggerLoginFlow();
-        // TODO reload user data in auth
-        // TODO store current URL and get back after login
       } else if (status === BackendReturnStatus.Failure) {
         setStatusMessage({
           error: true,

+ 10 - 4
src/contexts/timecontext.tsx

@@ -1,5 +1,6 @@
-import React, { Dispatch, SetStateAction, useEffect, useState } from 'react';
-import { Auth, System } from '../services';
+import React, { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react';
+import { useLocation } from 'react-router-dom';
+import { Auth, Session, System } from '../services';
 import { BackendReturnStatus } from '../types';
 
 const TimeContext = React.createContext<{
@@ -9,14 +10,19 @@ const TimeContext = React.createContext<{
 
 export const TimeProvider = ({ children }: { children: any }) => {
   const [offset, setOffset] = useState<number>(0);
+  const location = useLocation();
+  const refLocation = useRef<string>();
+
+  refLocation.current = location.pathname;
 
   useEffect(() => {
     const estimateTimeOffset = async () => {
       System.timestamp().then((response) => {
         if (response.status === BackendReturnStatus.Unauthorized) {
+          if (refLocation.current) {
+            Session.setLastShownComponent(refLocation.current);
+          }
           Auth.triggerLoginFlow();
-          // TODO reload user data in auth
-          // TODO store current URL and get back after login
         } else if (response.status === BackendReturnStatus.Ok) {
           // calculate the time offset (not accurate) between the server and the client to show "correct" times
           const clientTimeUtc = new Date().getTime()