BloomSupabaseAuthAdapter constructor

BloomSupabaseAuthAdapter({
  1. required String supabaseUrl,
  2. required String supabaseAnonKey,
  3. SupabaseClient? supabaseClient,
  4. BloomStorageAdapter? storage,
  5. String sessionKey = 'bloom_supabase_session',
})

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);
      }
    });
  }
}