Merge pull request #10859 from nixocio/ui_issue_warning_session

Remove warning for SSO session when logging in
This commit is contained in:
Kersom
2021-08-20 14:23:30 -04:00
committed by GitHub

View File

@@ -6,6 +6,7 @@ import React, {
useCallback, useCallback,
} from 'react'; } from 'react';
import { useHistory } from 'react-router-dom'; import { useHistory } from 'react-router-dom';
import { DateTime } from 'luxon';
import { RootAPI, MeAPI } from 'api'; import { RootAPI, MeAPI } from 'api';
import { isAuthenticated } from 'util/auth'; import { isAuthenticated } from 'util/auth';
import { SESSION_TIMEOUT_KEY } from '../constants'; import { SESSION_TIMEOUT_KEY } from '../constants';
@@ -66,8 +67,8 @@ SessionContext.displayName = 'SessionContext';
function SessionProvider({ children }) { function SessionProvider({ children }) {
const history = useHistory(); const history = useHistory();
const isSessionExpired = useRef(false); const isSessionExpired = useRef(false);
const sessionTimeoutId = useRef(); const sessionTimeoutId = useRef(null);
const sessionIntervalId = useRef(); const sessionIntervalId = useRef(null);
const [sessionTimeout, setSessionTimeout] = useStorage(SESSION_TIMEOUT_KEY); const [sessionTimeout, setSessionTimeout] = useStorage(SESSION_TIMEOUT_KEY);
const [sessionCountdown, setSessionCountdown] = useState(0); const [sessionCountdown, setSessionCountdown] = useState(0);
const [authRedirectTo, setAuthRedirectTo] = useState('/'); const [authRedirectTo, setAuthRedirectTo] = useState('/');
@@ -89,8 +90,15 @@ function SessionProvider({ children }) {
return () => {}; return () => {};
} }
const calcRemaining = () => const calcRemaining = () => {
parseInt(sessionTimeout, 10) - new Date().getTime(); if (sessionTimeout) {
return Math.max(
parseInt(sessionTimeout, 10) - DateTime.now().toMillis(),
0
);
}
return 0;
};
const handleSessionTimeout = () => { const handleSessionTimeout = () => {
let countDown = SESSION_WARNING_DURATION; let countDown = SESSION_WARNING_DURATION;
@@ -110,10 +118,12 @@ function SessionProvider({ children }) {
clearTimeout(sessionTimeoutId.current); clearTimeout(sessionTimeoutId.current);
clearInterval(sessionIntervalId.current); clearInterval(sessionIntervalId.current);
const calcTimeOut = calcRemaining() - SESSION_WARNING_DURATION * 1000;
isSessionExpired.current = false; isSessionExpired.current = false;
sessionTimeoutId.current = setTimeout( sessionTimeoutId.current = setTimeout(
handleSessionTimeout, handleSessionTimeout,
Math.min(calcRemaining() - SESSION_WARNING_DURATION * 1000, MAX_TIMEOUT) calcTimeOut <= 0 ? MAX_TIMEOUT : Math.min(calcTimeOut, MAX_TIMEOUT)
); );
return () => { return () => {