diff --git a/src/frontend/src/features/auth/api/fetchUser.ts b/src/frontend/src/features/auth/api/fetchUser.ts index 217536da..1ed3f14a 100644 --- a/src/frontend/src/features/auth/api/fetchUser.ts +++ b/src/frontend/src/features/auth/api/fetchUser.ts @@ -10,7 +10,13 @@ import { attemptSilentLogin, canAttemptSilentLogin } from '../utils/silentLogin' * Here our wrapper just returns false in that case, without triggering an error: * this is done to prevent unnecessary query retries with react query */ -export const fetchUser = (): Promise => { +export const fetchUser = ( + opts: { + attemptSilent?: boolean + } = { + attemptSilent: true, + } +): Promise => { return new Promise((resolve, reject) => { fetchApi('/users/me') .then(resolve) @@ -19,7 +25,7 @@ export const fetchUser = (): Promise => { if (error instanceof ApiError && error.statusCode === 401) { // make sure to not resolve the promise while trying to silent login // so that consumers of fetchUser don't think the work already ended - if (canAttemptSilentLogin()) { + if (opts.attemptSilent && canAttemptSilentLogin()) { attemptSilentLogin(300) } else { resolve(false) diff --git a/src/frontend/src/features/auth/api/useUser.tsx b/src/frontend/src/features/auth/api/useUser.tsx index 861c7085..058f379f 100644 --- a/src/frontend/src/features/auth/api/useUser.tsx +++ b/src/frontend/src/features/auth/api/useUser.tsx @@ -11,10 +11,15 @@ import { initializeSupportSession } from '@/features/support/hooks/useSupport' * * `isLoggedIn` is undefined while query is loading and true/false when it's done */ -export const useUser = () => { +export const useUser = ( + opts: { + fetchUserOptions?: Parameters[0] + } = {} +) => { const query = useQuery({ + // eslint-disable-next-line @tanstack/query/exhaustive-deps queryKey: [keys.user], - queryFn: fetchUser, + queryFn: () => fetchUser(opts.fetchUserOptions), staleTime: Infinity, })