From 221341a7325c7285c80611bc40245d8b4a011578 Mon Sep 17 00:00:00 2001 From: Stan Wohlwend Date: Tue, 21 May 2024 09:56:08 +0200 Subject: [PATCH] "If you weren't redirected, click here" --- .../stack/src/components-page/oauth-callback.tsx | 12 +++++++++++- packages/stack/src/lib/stack-app.ts | 5 ++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/stack/src/components-page/oauth-callback.tsx b/packages/stack/src/components-page/oauth-callback.tsx index 69bd3b058..2c2f3424d 100644 --- a/packages/stack/src/components-page/oauth-callback.tsx +++ b/packages/stack/src/components-page/oauth-callback.tsx @@ -9,18 +9,28 @@ export default function OAuthCallback () { const app = useStackApp(); const called = useRef(false); const [error, setError] = useState(null); + const [showRedirectLink, setShowRedirectLink] = useState(false); useEffect(() => runAsynchronously(async () => { if (called.current) return; called.current = true; + let hasRedirected = false; try { - await app.callOAuthCallback(); + hasRedirected = await app.callOAuthCallback(); } catch (e: any) { setError(e); } + if (!hasRedirected) { + await app.redirectToSignIn(); + } }), []); + useEffect(() => { + setTimeout(() => setShowRedirectLink(true), 3000); + }, []); + return + {showRedirectLink ?

If you are not redirected automatically, click here.

: null} {error ?

Something went wrong while processing the OAuth callback:

{JSON.stringify(error, null, 2)}
diff --git a/packages/stack/src/lib/stack-app.ts b/packages/stack/src/lib/stack-app.ts index 5bf46a0e7..e53dac7e2 100644 --- a/packages/stack/src/lib/stack-app.ts +++ b/packages/stack/src/lib/stack-app.ts @@ -745,10 +745,13 @@ class _StackClientAppImpl { @@ -1656,7 +1659,7 @@ export type StackClientApp, signInWithCredential(options: { email: string, password: string }): Promise, signUpWithCredential(options: { email: string, password: string }): Promise, - callOAuthCallback(): Promise, + callOAuthCallback(): Promise, sendForgotPasswordEmail(email: string): Promise, sendMagicLinkEmail(email: string): Promise, resetPassword(options: { code: string, password: string }): Promise,