@@ -138,7 +138,7 @@ export default class SupabaseClient<
138
138
} )
139
139
140
140
if ( ! settings . accessToken ) {
141
- this . _listenForAuthEvents ( )
141
+ setTimeout ( ( ) => this . _listenForAuthEvents ( ) , 0 )
142
142
}
143
143
}
144
144
@@ -278,7 +278,7 @@ export default class SupabaseClient<
278
278
return this . realtime . removeAllChannels ( )
279
279
}
280
280
281
- private async _getAccessToken ( ) {
281
+ protected async _getAccessToken ( ) {
282
282
if ( this . accessToken ) {
283
283
return await this . accessToken ( )
284
284
}
@@ -288,7 +288,7 @@ export default class SupabaseClient<
288
288
return data . session ?. access_token ?? null
289
289
}
290
290
291
- private _initSupabaseAuthClient (
291
+ protected _initSupabaseAuthClient (
292
292
{
293
293
autoRefreshToken,
294
294
persistSession,
@@ -324,21 +324,23 @@ export default class SupabaseClient<
324
324
} )
325
325
}
326
326
327
- private _initRealtimeClient ( options : RealtimeClientOptions ) {
327
+ protected _initRealtimeClient ( options : RealtimeClientOptions ) {
328
328
return new RealtimeClient ( this . realtimeUrl . href , {
329
329
...options ,
330
330
params : { ...{ apikey : this . supabaseKey } , ...options ?. params } ,
331
331
} )
332
332
}
333
333
334
- private _listenForAuthEvents ( ) {
335
- let data = this . auth . onAuthStateChange ( ( event , session ) => {
336
- this . _handleTokenChanged ( event , 'CLIENT' , session ?. access_token )
334
+ protected async _listenForAuthEvents ( ) {
335
+ return await this . auth . onAuthStateChange ( ( event , session ) => {
336
+ setTimeout (
337
+ async ( ) => await this . _handleTokenChanged ( event , 'CLIENT' , session ?. access_token ) ,
338
+ 0
339
+ )
337
340
} )
338
- return data
339
341
}
340
342
341
- private _handleTokenChanged (
343
+ protected async _handleTokenChanged (
342
344
event : AuthChangeEvent ,
343
345
source : 'CLIENT' | 'STORAGE' ,
344
346
token ?: string
@@ -348,10 +350,16 @@ export default class SupabaseClient<
348
350
this . changedAccessToken !== token
349
351
) {
350
352
this . changedAccessToken = token
353
+ this . realtime . setAuth ( token )
351
354
} else if ( event === 'SIGNED_OUT' ) {
352
- this . realtime . setAuth ( )
353
- if ( source == 'STORAGE' ) this . auth . signOut ( )
354
- this . changedAccessToken = undefined
355
+ try {
356
+ await this . realtime . setAuth ( )
357
+ if ( source == 'STORAGE' ) this . auth . signOut ( )
358
+ } catch ( error ) {
359
+ console . log ( 'Failed to set auth for realtime client:' , error )
360
+ } finally {
361
+ this . changedAccessToken = undefined
362
+ }
355
363
}
356
364
}
357
365
}
0 commit comments