From 314d774bdea78e8bfbc651d045be9bc30ae1e4e1 Mon Sep 17 00:00:00 2001 From: MartinBraquet Date: Thu, 30 Oct 2025 11:51:56 +0100 Subject: [PATCH] Fix --- web/pages/_app.tsx | 58 +++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/web/pages/_app.tsx b/web/pages/_app.tsx index 043f5d7..578c36b 100644 --- a/web/pages/_app.tsx +++ b/web/pages/_app.tsx @@ -12,7 +12,7 @@ import clsx from 'clsx' import {initTracking} from 'web/lib/service/analytics' import WebPush from "web/lib/service/web-push"; import AndroidPush from "web/lib/service/android-push"; -import {GOOGLE_CLIENT_ID} from "web/lib/firebase/users"; +import {GOOGLE_CLIENT_ID, isAndroidWebView} from "web/lib/firebase/users"; // See https://nextjs.org/docs/basic-features/font-optimization#google-fonts // and if you add a font, you must add it to tailwind config as well for it to work. @@ -64,33 +64,39 @@ function MyApp({Component, pageProps}: AppProps) { } }, []) - window.addEventListener('oauthRedirect', async (event: any) => { - console.log('Received oauthRedirect event:', event.detail); - const url = new URL(event.detail); + useEffect(() => { + if (isAndroidWebView()) { + console.log('Registering OAuth redirect listener for Android WebView') - const code = url.searchParams.get('code'); - if (!code) { - console.error('No code found in URL'); - return; + window.addEventListener('oauthRedirect', async (event: any) => { + console.log('Received oauthRedirect event:', event.detail); + const url = new URL(event.detail); + + const code = url.searchParams.get('code'); + if (!code) { + console.error('No code found in URL'); + return; + } + + const codeVerifier = localStorage.getItem('pkce_verifier'); + + const tokenResponse = await fetch('https://oauth2.googleapis.com/token', { + method: 'POST', + headers: {'Content-Type': 'application/x-www-form-urlencoded'}, + body: new URLSearchParams({ + client_id: GOOGLE_CLIENT_ID, + code, + code_verifier: codeVerifier!, + redirect_uri: 'com.compassmeet:/auth', + grant_type: 'authorization_code', + }), + }); + + const tokens = await tokenResponse.json(); + console.log('Tokens:', tokens); + }); } - - const codeVerifier = localStorage.getItem('pkce_verifier'); - - const tokenResponse = await fetch('https://oauth2.googleapis.com/token', { - method: 'POST', - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, - body: new URLSearchParams({ - client_id: GOOGLE_CLIENT_ID, - code, - code_verifier: codeVerifier!, - redirect_uri: 'com.compassmeet:/auth', - grant_type: 'authorization_code', - }), - }); - - const tokens = await tokenResponse.json(); - console.log('Tokens:', tokens); - }); + }, []) const title = 'Compass' const description = 'The platform for intentional connections'