@@ -131,7 +131,7 @@ export default class SupabaseClient<
131
131
} )
132
132
133
133
if ( ! settings . accessToken ) {
134
- this . _listenForAuthEvents ( )
134
+ setTimeout ( ( ) => this . _listenForAuthEvents ( ) , 0 )
135
135
}
136
136
}
137
137
@@ -268,7 +268,7 @@ export default class SupabaseClient<
268
268
return this . realtime . removeAllChannels ( )
269
269
}
270
270
271
- private async _getAccessToken ( ) {
271
+ protected async _getAccessToken ( ) {
272
272
if ( this . accessToken ) {
273
273
return await this . accessToken ( )
274
274
}
@@ -278,7 +278,7 @@ export default class SupabaseClient<
278
278
return data . session ?. access_token ?? null
279
279
}
280
280
281
- private _initSupabaseAuthClient (
281
+ protected _initSupabaseAuthClient (
282
282
{
283
283
autoRefreshToken,
284
284
persistSession,
@@ -314,21 +314,23 @@ export default class SupabaseClient<
314
314
} )
315
315
}
316
316
317
- private _initRealtimeClient ( options : RealtimeClientOptions ) {
317
+ protected _initRealtimeClient ( options : RealtimeClientOptions ) {
318
318
return new RealtimeClient ( this . realtimeUrl . href , {
319
319
...options ,
320
320
params : { ...{ apikey : this . supabaseKey } , ...options ?. params } ,
321
321
} )
322
322
}
323
323
324
- private _listenForAuthEvents ( ) {
325
- let data = this . auth . onAuthStateChange ( ( event , session ) => {
326
- this . _handleTokenChanged ( event , 'CLIENT' , session ?. access_token )
324
+ protected async _listenForAuthEvents ( ) {
325
+ return await this . auth . onAuthStateChange ( ( event , session ) => {
326
+ setTimeout (
327
+ async ( ) => await this . _handleTokenChanged ( event , 'CLIENT' , session ?. access_token ) ,
328
+ 0
329
+ )
327
330
} )
328
- return data
329
331
}
330
332
331
- private _handleTokenChanged (
333
+ protected async _handleTokenChanged (
332
334
event : AuthChangeEvent ,
333
335
source : 'CLIENT' | 'STORAGE' ,
334
336
token ?: string
@@ -338,10 +340,16 @@ export default class SupabaseClient<
338
340
this . changedAccessToken !== token
339
341
) {
340
342
this . changedAccessToken = token
343
+ this . realtime . setAuth ( token )
341
344
} else if ( event === 'SIGNED_OUT' ) {
342
- this . realtime . setAuth ( )
343
- if ( source == 'STORAGE' ) this . auth . signOut ( )
344
- this . changedAccessToken = undefined
345
+ try {
346
+ await this . realtime . setAuth ( )
347
+ if ( source == 'STORAGE' ) this . auth . signOut ( )
348
+ } catch ( error ) {
349
+ console . log ( 'Failed to set auth for realtime client:' , error )
350
+ } finally {
351
+ this . changedAccessToken = undefined
352
+ }
345
353
}
346
354
}
347
355
}
0 commit comments