fix(#black-screen): remove tokens

black-screen
Andrei Dekterev 3 years ago
parent a910921bde
commit 8e08fbadd9
  1. 13
      src/features/App/index.tsx
  2. 11
      src/helpers/callApi/logoutIfUnauthorized.tsx

@ -1,8 +1,4 @@
import { import { Suspense } from 'react'
Suspense,
useEffect,
useState,
} from 'react'
import { Router } from 'react-router-dom' import { Router } from 'react-router-dom'
import { QueryClient, QueryClientProvider } from 'react-query' import { QueryClient, QueryClientProvider } from 'react-query'
import { ReactQueryDevtools } from 'react-query/devtools' import { ReactQueryDevtools } from 'react-query/devtools'
@ -31,16 +27,11 @@ import { useAuthStore } from '../AuthStore'
setClientTitleAndDescription(client.title, client.description) setClientTitleAndDescription(client.title, client.description)
const Main = () => { const Main = () => {
const [isToken, setIsToken] = useState(false)
const { userInfo } = useAuthStore() const { userInfo } = useAuthStore()
const queryClient = new QueryClient() const queryClient = new QueryClient()
useEffect(() => {
if (userInfo) readToken() && setIsToken(true)
}, [userInfo])
// имеется действующий токен // имеется действующий токен
return isToken ? ( return userInfo && readToken() ? (
<ErrorBoundary> <ErrorBoundary>
<QueryClientProvider client={queryClient}> <QueryClientProvider client={queryClient}>
<ReactQueryDevtools initialIsOpen={isLocalhost} /> <ReactQueryDevtools initialIsOpen={isLocalhost} />

@ -1,13 +1,22 @@
import { removeToken } from '../token'
import { removeCookie } from '../cookie'
export const logoutIfUnauthorized = async (response: Response) => { export const logoutIfUnauthorized = async (response: Response) => {
/* отключили из-за доступа без авторизации */ /* отключили из-за доступа без авторизации */
const body = await response.json()
if (response.status === 401 || response.status === 403) { if (response.status === 401 || response.status === 403) {
window.dispatchEvent(new Event('FORBIDDEN_REQUEST')) window.dispatchEvent(new Event('FORBIDDEN_REQUEST'))
if (body.message.includes('Signature has expired')) {
removeToken()
removeCookie('access_token')
}
} }
const error = new Error(response.statusText) const error = new Error(response.statusText)
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.error(error) console.error(error)
const body = await response.json()
return Promise.reject(body) return Promise.reject(body)
} }

Loading…
Cancel
Save