From ba2f5776e78bed6872c87833bb4dc1117f86ea1b Mon Sep 17 00:00:00 2001 From: Michael Thomas Date: Fri, 27 Mar 2026 13:28:01 -0400 Subject: [PATCH] fix(oidcloginbutton): ensure router is initialized in callback hook --- src/components/Login/OidcLoginButton.tsx | 29 +++++++++++++----------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/components/Login/OidcLoginButton.tsx b/src/components/Login/OidcLoginButton.tsx index d37e9ece6..7a9187b5f 100644 --- a/src/components/Login/OidcLoginButton.tsx +++ b/src/components/Login/OidcLoginButton.tsx @@ -50,22 +50,25 @@ export default function OidcLoginButton({ } }, [provider, intl, onError, router]); - useEffect(() => { - if (loading) return; + useEffect( + () => { + if (!router.isReady || loading) return; - // OIDC provider has redirected back with an authorization code or error - const isCallback = query.code != null || query.error != null; + // OIDC provider has redirected back with an authorization code or error + const isCallback = query.code != null || query.error != null; - if (isCallback && getOidcProviderSlug() === provider.slug) { - clearOidcProviderSlug(); - handleCallback(); - } - // Support direct redirect via ?provider=slug query param - else if (!isCallback && query.provider === provider.slug) { - redirectToLogin(); - } + if (isCallback && getOidcProviderSlug() === provider.slug) { + clearOidcProviderSlug(); + handleCallback(); + } + // Support direct redirect via ?provider=slug query param + else if (!isCallback && query.provider === provider.slug) { + redirectToLogin(); + } + }, // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + [router.isReady] + ); return (