FirebaseAuthWeb constructor

FirebaseAuthWeb({
  1. required FirebaseApp app,
})

The entry point for the FirebaseAuthWeb class.

Implementation

FirebaseAuthWeb({required FirebaseApp app}) : 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
  delegate.onAuthStateChanged.map((auth_interop.User? webUser) {
    if (!_initialized.isCompleted) {
      _initialized.complete();
    }

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

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