FirebaseAuthWeb constructor

FirebaseAuthWeb({
  1. required FirebaseApp app,
})

The entry point for the FirebaseAuthWeb class.

Implementation

FirebaseAuthWeb({required FirebaseApp app})
    : _webAuth = auth_interop.getAuthInstance(core_interop.app(app.name)),
      super(appInstance: app) {
  // Create a app instance broadcast stream for both delegate listener events
  _userChangesListeners[app.name] =
      StreamController<UserPlatform?>.broadcast();
  _authStateChangesListeners[app.name] =
      StreamController<UserPlatform?>.broadcast();
  _idTokenChangesListeners[app.name] =
      StreamController<UserPlatform?>.broadcast();

  // TODO(rrousselGit): close StreamSubscription
  _webAuth!.onAuthStateChanged.map((auth_interop.User? webUser) {
    if (!_initialized.isCompleted) {
      _initialized.complete();
    }

    if (webUser == null) {
      return null;
    } else {
      return UserWeb(this, webUser);
    }
  }).listen((UserWeb? webUser) {
    _authStateChangesListeners[app.name]!.add(webUser);
  });

  // TODO(rrousselGit): close StreamSubscription
  // Also triggers `userChanged` events
  _webAuth!.onIdTokenChanged.map((auth_interop.User? webUser) {
    if (webUser == null) {
      return null;
    } else {
      return UserWeb(this, webUser);
    }
  }).listen((UserWeb? webUser) {
    _idTokenChangesListeners[app.name]!.add(webUser);
    _userChangesListeners[app.name]!.add(webUser);
  });
}