doRefresh now only depends on router.

This commit is contained in:
Jesse Brault 2024-08-20 11:11:45 -05:00
parent 9cc05d0a7a
commit c099275b31

View File

@ -1,6 +1,6 @@
import { QueryCache, QueryClient, QueryClientProvider } from '@tanstack/react-query' import { QueryCache, QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { ReactQueryDevtools } from '@tanstack/react-query-devtools' import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
import { useLocation, useNavigate } from '@tanstack/react-router' import { useRouter } from '@tanstack/react-router'
import React, { useCallback, useMemo, useRef } from 'react' import React, { useCallback, useMemo, useRef } from 'react'
import { ApiError } from './api/ApiError' import { ApiError } from './api/ApiError'
import ExpiredTokenError from './api/ExpiredTokenError' import ExpiredTokenError from './api/ExpiredTokenError'
@ -9,8 +9,7 @@ import { useAuth } from './auth'
const AuthAwareQueryClientProvider = ({ children }: React.PropsWithChildren) => { const AuthAwareQueryClientProvider = ({ children }: React.PropsWithChildren) => {
const { putToken } = useAuth() const { putToken } = useAuth()
const navigate = useNavigate() const router = useRouter()
const location = useLocation()
const refreshing = useRef(false) const refreshing = useRef(false)
const doRefresh = useCallback(async () => { const doRefresh = useCallback(async () => {
@ -26,11 +25,11 @@ const AuthAwareQueryClientProvider = ({ children }: React.PropsWithChildren) =>
}) })
} catch (error) { } catch (error) {
if (error instanceof RefreshTokenError) { if (error instanceof RefreshTokenError) {
navigate({ router.navigate({
to: '/login', to: '/login',
search: { search: {
reason: error.reason, reason: error.reason,
redirect: location.href redirect: router.state.location.href
} }
}) })
} else if (error instanceof ApiError) { } else if (error instanceof ApiError) {
@ -39,7 +38,7 @@ const AuthAwareQueryClientProvider = ({ children }: React.PropsWithChildren) =>
} }
refreshing.current = false refreshing.current = false
} }
}, [putToken, navigate, location]) }, [putToken, router])
const queryClient = useMemo( const queryClient = useMemo(
() => () =>