Files
prosappco/lib/blocs/sing_in_bloc/sign_in_bloc.dart
T
2024-02-19 18:16:51 -05:00

49 lines
1.2 KiB
Dart

import 'dart:developer';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';
import 'package:user_repository/user_repository.dart';
part 'sign_in_event.dart';
part 'sign_in_state.dart';
class SignInBloc extends Bloc<SignInEvent, SignInState> {
final UserRepository _userRepository;
SignInBloc({required UserRepository userRepository})
: _userRepository = userRepository,
super(SignInInitial()) {
userRepository.streamUser().listen((authUser) {
try {
if (authUser == null) {
emit(SignInFailure());
} else {
emit(SignInSuccess());
}
} catch (e) {
log(e.toString());
}
});
on<SignInRequired>(_onSignInRequired);
on<SignOutRequired>(_onSignOutRequired);
}
void _onSignInRequired(
SignInRequired event, Emitter<SignInState> emit) async {
emit(SignInProcess());
try {
await _userRepository.signIn(event.email, event.password);
emit(SignInSuccess());
} catch (e) {
log(e.toString());
emit(const SignInFailure());
}
}
void _onSignOutRequired(
SignOutRequired event, Emitter<SignInState> emit) async {
await _userRepository.logOut();
}
}