BloomSupabaseAuthAdapter constructor
BloomSupabaseAuthAdapter({
- required String supabaseUrl,
- required String supabaseAnonKey,
- SupabaseClient? supabaseClient,
- BloomStorageAdapter? storage,
- String sessionKey = 'bloom_supabase_session',
Creates a BloomSupabaseAuthAdapter.
Implementation
BloomSupabaseAuthAdapter({
required this.supabaseUrl,
required this.supabaseAnonKey,
this.supabaseClient,
super.storage,
String sessionKey = 'bloom_supabase_session',
}) : _http = BloomHttpClient(baseUrl: '$supabaseUrl/auth/v1'),
super(
sessionKey: sessionKey,
fromJson: (json) => BloomSupabaseUser.fromJson(json),
toJson: (user) => user.toJson(),
) {
_http.requestInterceptors.add((req) {
req.headers['apikey'] = supabaseAnonKey;
return req;
});
// If a live SupabaseClient is provided, listen to auth state changes
if (supabaseClient != null) {
_authStateSubscription = supabaseClient!.auth.onAuthStateChange.listen((data) {
final session = data.session;
if (session != null) {
final user = BloomSupabaseUser(
id: session.user.id,
email: session.user.email ?? '',
accessToken: session.accessToken,
refreshToken: session.refreshToken,
userMetadata: session.user.userMetadata ?? const {},
);
setSession(user: user, token: session.accessToken);
}
});
}
}