handleAuthStateChanges method

Future<void> handleAuthStateChanges(
  1. User? fbUser
)

Implementation

Future<void> handleAuthStateChanges(fb_auth.User? fbUser) async {
  logd('handleAuthStateChanges called');

  // final wasAuthenticated = fbUser != null;

  if (fbUser == null) {
    logd('fbUser is null during handleAuthStateChanges');
    _updateCachedState(false);
    _hasAuthStateChangeListenerRunAtLeastOnce = true;

    // Emit to the stream
    _isLoggedInStreamController.add(false);

    // Complete the auth state completer if it's waiting
    if (_authStateCompleter != null && !_authStateCompleter!.isCompleted) {
      _authStateCompleter!.complete(false);
    }

    signOut(useFbAuthAlso: false);
  } else {
    logd('fbUser is NOT null during handleAuthStateChanges');
    _updateCachedState(true);
    _hasAuthStateChangeListenerRunAtLeastOnce = true;

    // Emit to the stream
    _isLoggedInStreamController.add(true);

    // Complete the auth state completer if it's waiting
    if (_authStateCompleter != null && !_authStateCompleter!.isCompleted) {
      _authStateCompleter!.complete(true);
    }

    await onAuthenticated?.call(fbUser.uid);
  }
}