From 4cc9526bf42c02eb2ff32d9e54172dfe325a43c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20Caba=C3=A7o?= Date: Tue, 10 Dec 2024 17:21:32 +0000 Subject: [PATCH 1/3] fix: call set auth for realtime on token changes --- src/SupabaseClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts index 5058edf55..0663f40a1 100644 --- a/src/SupabaseClient.ts +++ b/src/SupabaseClient.ts @@ -329,13 +329,13 @@ export default class SupabaseClient< source: 'CLIENT' | 'STORAGE', token?: string ) { + this.realtime.setAuth() if ( (event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') && this.changedAccessToken !== token ) { this.changedAccessToken = token } else if (event === 'SIGNED_OUT') { - this.realtime.setAuth() if (source == 'STORAGE') this.auth.signOut() this.changedAccessToken = undefined } From f2e28827c3209e6bcb8e55519cc69c36ea50b9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20Caba=C3=A7o?= Date: Wed, 11 Dec 2024 15:30:58 +0000 Subject: [PATCH 2/3] make it await for setAuth --- src/SupabaseClient.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts index 0663f40a1..378f4b541 100644 --- a/src/SupabaseClient.ts +++ b/src/SupabaseClient.ts @@ -318,18 +318,19 @@ export default class SupabaseClient< } private _listenForAuthEvents() { - let data = this.auth.onAuthStateChange((event, session) => { - this._handleTokenChanged(event, 'CLIENT', session?.access_token) + let data = this.auth.onAuthStateChange(async (event, session) => { + await this._handleTokenChanged(event, 'CLIENT', session?.access_token) }) return data } - private _handleTokenChanged( + private async _handleTokenChanged( event: AuthChangeEvent, source: 'CLIENT' | 'STORAGE', token?: string ) { - this.realtime.setAuth() + // On any token change we call the realtime setAuth function that it's by itself a callback and lets Realtime run the flow needed by it. + await this.realtime.setAuth() if ( (event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') && this.changedAccessToken !== token From 5879027dd6171bc3f8ced598d2e0f47ef3ad5c38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20Caba=C3=A7o?= Date: Wed, 11 Dec 2024 16:05:04 +0000 Subject: [PATCH 3/3] Update src/SupabaseClient.ts Co-authored-by: Andrew Valleteau --- src/SupabaseClient.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts index 378f4b541..d160f3351 100644 --- a/src/SupabaseClient.ts +++ b/src/SupabaseClient.ts @@ -329,7 +329,8 @@ export default class SupabaseClient< source: 'CLIENT' | 'STORAGE', token?: string ) { - // On any token change we call the realtime setAuth function that it's by itself a callback and lets Realtime run the flow needed by it. +// On token change, call Realtime's `setAuth` to sync auth and connections. +// Realtime handles token retrieval internally which may involve customizations, so we don't pass the token directly. await this.realtime.setAuth() if ( (event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') &&