From 4fa2d04df9164b48d1cf3e3fb01326366d31a652 Mon Sep 17 00:00:00 2001 From: Zoia R Date: Mon, 15 Aug 2022 20:37:09 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20ott-2683-logout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/AuthStore/hooks/useAuth.tsx | 35 ++++++++++++------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/features/AuthStore/hooks/useAuth.tsx b/src/features/AuthStore/hooks/useAuth.tsx index 2d7d0cb2..fbd080a1 100644 --- a/src/features/AuthStore/hooks/useAuth.tsx +++ b/src/features/AuthStore/hooks/useAuth.tsx @@ -16,20 +16,14 @@ import { PAGES } from 'config' import { addLanguageUrlParam, } from 'helpers/languageUrlParam' -import { - writeToken, - removeToken, - readToken, -} from 'helpers/token' +import { writeToken, removeToken } from 'helpers/token' import { setCookie, removeCookie } from 'helpers/cookie' import { isMatchPage } from 'helpers/isMatchPage' import { useLocalStore, useToggle } from 'hooks' import { useLexicsStore } from 'features/LexicsStore' -import { - queryParamStorage, -} from 'features/QueryParamsStorage' +import { queryParamStorage } from 'features/QueryParamsStorage' import { getUserInfo } from 'requests/getUserInfo' import { checkDevice, FailedResponse } from 'requests/checkDevice' @@ -148,21 +142,26 @@ export const useAuth = () => { history, ]) - const checkNewDevice = useCallback(async () => { - const accessToken = readToken() - if (!accessToken) return - - await checkDevice(accessToken).catch((er:FailedResponse) => { - if (er.error) { - logout() - return - } - userManager.clearStaleState() + const reChekNewDevice = useCallback(async () => { + const loadedUser = await userManager.getUser() + if (!loadedUser) return + + checkDevice(loadedUser.access_token).catch((er:FailedResponse) => { + if (er.error) return setIsNewDeviceLogin(true) setTimeout(logout, 10000) }) }, [logout, userManager]) + const checkNewDevice = useCallback(async () => { + const loadedUser = await userManager.getUser() + if (!loadedUser) return + + checkDevice(loadedUser.access_token).catch(() => { + setTimeout(reChekNewDevice, 2000) + }) + }, [reChekNewDevice, userManager]) + useEffect(() => { const startCheckDevice = setInterval(checkNewDevice, 20000) isNewDeviceLogin && clearInterval(startCheckDevice)