mapEventToState method

  1. @override
Stream<AuthState> mapEventToState(
  1. AuthEvent event
)

@Deprecated - Use on

Must be implemented when a class extends Bloc. mapEventToState is called whenever an event is added and is responsible for converting that event into a new state. mapEventToState can yield zero, one, or multiple states for an event.

Implementation

@override
Stream<AuthState> mapEventToState(AuthEvent event) async* {
  if (event is AppStarted) {
    yield Loading(true);

    var authDataResponse = await _authRepository.getAuthData();

    if (!authDataResponse.isSuccess!) {
      var loginDataResponse = await _authRepository.getLoginData();
      if (!loginDataResponse.isSuccess!)
        yield UnAuthenticated();
      else {
        add(LogIn(loginDataResponse.value!));
      }
    } else
      yield Authenticated.fromResponse(authDataResponse);
  } else if (event is LogIn) {
    yield Loading(false);
    var response = await _authRepository.authenticate(event.model);

    if (response.isSuccess!)
      yield Authenticated.fromResponse(response);
    else
      yield Failed(response.errorMessage!);
  } else if (event is TokenExpired) {
    var response = await _authRepository.refreshToken();
    if (!response.isSuccess!) yield Failed(response.errorMessage!);
    yield Authenticated.fromResponse(response);
  } else {
    yield Loading(false);
    var response = await _authRepository.logOut();
    if (response.isSuccess!)
      yield UnAuthenticated();
    else
      yield Failed(response.errorMessage!);
  }
}