mapEventToState method
@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!);
}
}