From 8818d12ee94bb39355a5d279c86b8f248699cb2d Mon Sep 17 00:00:00 2001 From: Nathan Vasse Date: Mon, 10 Feb 2025 16:34:16 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(front)=20add=20option=20to?= =?UTF-8?q?=20disable=20silent=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When displayed in an iframe, not being logged-in causes a redirection to the home page. Which is not what we want with the SDK integration. We just want to stay on the same page. --- src/frontend/src/features/auth/api/fetchUser.ts | 10 ++++++++-- src/frontend/src/features/auth/api/useUser.tsx | 9 +++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) 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, })