From 01244374a4a1ca201092e4d9f5697fb0dc0f3836 Mon Sep 17 00:00:00 2001 From: Prashant Abbi Date: Wed, 4 Jun 2025 18:31:09 +0530 Subject: [PATCH] Automatic commit from Bubble --- .../params.json | 22 ++++++------ .../{oauth-signin => oauth-dxgqax38}/run.js | 0 elements/AAC-850m6/initialize.js | 36 +++++++++++++++++-- 3 files changed, 45 insertions(+), 13 deletions(-) rename elements/AAC-850m6/element_actions/{oauth-signin => oauth-dxgqax38}/params.json (99%) rename elements/AAC-850m6/element_actions/{oauth-signin => oauth-dxgqax38}/run.js (100%) diff --git a/elements/AAC-850m6/element_actions/oauth-signin/params.json b/elements/AAC-850m6/element_actions/oauth-dxgqax38/params.json similarity index 99% rename from elements/AAC-850m6/element_actions/oauth-signin/params.json rename to elements/AAC-850m6/element_actions/oauth-dxgqax38/params.json index e43e882..52b1210 100644 --- a/elements/AAC-850m6/element_actions/oauth-signin/params.json +++ b/elements/AAC-850m6/element_actions/oauth-dxgqax38/params.json @@ -2,6 +2,16 @@ "caption": "Sign in with OAuth", "doc": "Signs in a user using an OAuth provider (Google, GitHub, etc.)", "fields": { + "additional_parameters": { + "caption": "Additional Parameters", + "doc": "Optional. Additional OAuth parameters as a JSON string (e.g., {\"prompt\": \"consent\"})", + "editor": "DynamicValue", + "long_text": true, + "name": "additional_parameters", + "optional": true, + "rank": 3, + "value": "text" + }, "provider": { "caption": "Provider", "doc": "The OAuth provider to use (e.g., 'google', 'github', 'facebook', 'azure', 'bitbucket', 'discord', 'gitlab', 'notion', 'slack', 'spotify', 'twitch', 'twitter', 'workos')", @@ -26,16 +36,6 @@ "optional": true, "rank": 2, "value": "text" - }, - "additional_parameters": { - "caption": "Additional Parameters", - "doc": "Optional. Additional OAuth parameters as a JSON string (e.g., {\"prompt\": \"consent\"})", - "editor": "DynamicValue", - "long_text": true, - "name": "additional_parameters", - "optional": true, - "rank": 3, - "value": "text" } } -} \ No newline at end of file +} \ No newline at end of file diff --git a/elements/AAC-850m6/element_actions/oauth-signin/run.js b/elements/AAC-850m6/element_actions/oauth-dxgqax38/run.js similarity index 100% rename from elements/AAC-850m6/element_actions/oauth-signin/run.js rename to elements/AAC-850m6/element_actions/oauth-dxgqax38/run.js diff --git a/elements/AAC-850m6/initialize.js b/elements/AAC-850m6/initialize.js index b8ec46e..d51afe7 100644 --- a/elements/AAC-850m6/initialize.js +++ b/elements/AAC-850m6/initialize.js @@ -193,7 +193,39 @@ function(instance, context) { // Add to the existing initialization code, after the Supabase client is initialized if (instance.data.supabase) { - // Centralized auth state change handler + // First, check for OAuth callback state + const hasCallbackState = window.location.hash || window.location.search; + if (hasCallbackState) { + console.log('Detected OAuth callback state, attempting to handle...'); + instance.data.supabase.auth.getSession() + .then(({ data: { session }, error }) => { + if (error) { + return instance.data.handleError("Failed to get session after OAuth", error); + } + + if (session) { + console.log('Successfully retrieved session after OAuth callback'); + instance.data.updateUserStates(session.user, session, instance.data.element_level_properties); + instance.triggerEvent('user_is_logged_in'); + } else { + // If no session, try to exchange the OAuth token + instance.data.supabase.auth.getUser() + .then(({ data: { user }, error }) => { + if (error) { + return instance.data.handleError("Failed to get user after OAuth", error); + } + + if (user) { + console.log('Successfully retrieved user after OAuth callback'); + instance.data.updateUserStates(user, null, instance.data.element_level_properties); + instance.triggerEvent('user_is_logged_in'); + } + }); + } + }); + } + + // Then set up the auth state change listener instance.data.supabase.auth.onAuthStateChange((event, session) => { console.log('Auth state changed:', event); @@ -211,7 +243,7 @@ function(instance, context) { break; case 'USER_UPDATED': - // Handle user data updates (e.g., password change, email update) + // Handle user data updates instance.data.updateUserStates(session.user, session, instance.data.element_level_properties); instance.triggerEvent('user_updated'); break;