41 lines
972 B
Dart
41 lines
972 B
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import '../../../domain/usecases/login_usecase.dart';
|
|
import 'login_event.dart';
|
|
import 'login_state.dart';
|
|
|
|
class LoginBloc extends Bloc<LoginEvent, LoginState> {
|
|
final LoginUseCase loginUseCase;
|
|
|
|
LoginBloc({required this.loginUseCase}) : super(const LoginInitial()) {
|
|
on<LoginSubmitted>(_onLoginSubmitted);
|
|
on<LoginReset>(_onLoginReset);
|
|
}
|
|
|
|
Future<void> _onLoginSubmitted(
|
|
LoginSubmitted event,
|
|
Emitter<LoginState> emit,
|
|
) async {
|
|
emit(const LoginLoading());
|
|
|
|
final result = await loginUseCase(event.request);
|
|
|
|
result.fold(
|
|
(failure) => emit(LoginError(failure.message)),
|
|
(response) {
|
|
if (response.isSuccess) {
|
|
emit(LoginSuccess(response));
|
|
} else {
|
|
emit(LoginError(response.message));
|
|
}
|
|
},
|
|
);
|
|
}
|
|
|
|
void _onLoginReset(
|
|
LoginReset event,
|
|
Emitter<LoginState> emit,
|
|
) {
|
|
emit(const LoginInitial());
|
|
}
|
|
}
|