mapEventToState method

  1. @override
Stream<RegisterState> mapEventToState(
  1. RegisterEvent 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<RegisterState> mapEventToState(
  RegisterEvent event,
) async* {
  if (event is RegisterButtonTapEvent) {
    yield RegisterLoadingState();
    final response = await controller.registerUser(
        username: event.username,
        name: event.fullName!,
        email: event.email,
        password: event.password,
        phone: event.phone,
        address: event.address,
        role: event.role,
        subRole: event.subRole,
        schoolId: event.schoolId);
    if (response.ok) {
      if (response.user != null) {
        await sessionManager.saveCurrentUser(user: response.user!);
      }
      if (response.accessToken != null) {
        await sessionManager.saveToken(accessToken: response.accessToken!);
      }
      yield RegisterSuccessState(response);
      return;
    }
    yield RegisterFailureState(errorMessage: response.message!);
  } else if (event is CheckUserNameAvailability) {
    yield UsernameCheckingState();
    final response = await controller.checkUsername(username: event.username);
    if (response.ok) {
      yield UsernameCheckSuccessState(response);
      return;
    }
    yield UsernameCheckFailureState(response);
  }
}