1import 'package:equatable/equatable.dart';
2import 'package:firebase_messaging/firebase_messaging.dart';
3import 'package:flutter_bloc/flutter_bloc.dart';
5import '../../../../../core/common/use_cases/use_cases.dart';
6import '../../../../../core/errors/failures.dart';
7import '../../../../../core/services/notification_service.dart';
8import '../../../../../core/services/service_locator.dart';
9import '../../../domain/entities/credentials_entity.dart';
10import '../../../domain/entities/session_entity.dart';
11import '../../../domain/use_cases/chec_biometric_auth_availability_usecase.dart';
12import '../../../domain/use_cases/load_credentials_usecase.dart';
13import '../../../domain/use_cases/load_session_usecase.dart';
14import '../../../domain/use_cases/signin_usecases.dart';
15import '../../../domain/use_cases/signout_usecase.dart';
17part
'authentication_event.dart';
18part
'authentication_state.dart';
21 extends Bloc<AuthenticationEvent, AuthenticationState> {
34 on<CheckBiometricAuthenticationAvailabilityEvent>(
41 Emitter<AuthenticationState> emit,
52 Emitter<AuthenticationState> emit,
54 emit(AuthenticatingState());
61 emit(AuthenticatedState(session: session));
68 LoadSessionEvent event,
69 Emitter<AuthenticationState> emit,
76 if (session != null) {
78 emit(AuthenticatedState(session: session));
80 emit(UnauthenticatedState());
89 Emitter<AuthenticationState> emit,
97 final token = await FirebaseMessaging.instance.getToken();
99 await notificationService.removeDeviceToken(token);
101 notificationService.updateSession(null);
102 emit(UnauthenticatedState());
109 LoadCredentialsEvent event,
110 Emitter<AuthenticationState> emit,
120 CheckBiometricAuthenticationAvailabilityEvent event,
121 Emitter<AuthenticationState> emit,
126 (
failure) => emit(BiometricAuthUnavailable()),
129 isAvailable ? BiometricAuthAvailable() : BiometricAuthUnavailable(),
const SignInEvent({required this.reqEntity})
final class AuthenticatedState extends AuthenticationState credentials
const CredentialsLoadedState({required this.credentials})
const AuthenticationFailureState({required this.failure})
Future< void > _onCheckBiometricAuthenticationAvailabilityEvent(CheckBiometricAuthenticationAvailabilityEvent event, Emitter< AuthenticationState > emit,) async
final _loadSessionUseCase
final _loadUserCredentialsUseCase
Future< void > _onLoadCredentialsEvent(LoadCredentialsEvent event, Emitter< AuthenticationState > emit,) async
Future< void > _onloadEmailEvent(LoadEmailEvent event, Emitter< AuthenticationState > emit,) async
Future< void > _onSignInEvent(SignInEvent event, Emitter< AuthenticationState > emit,) async
Future< void > _onLoadSessionEvent(LoadSessionEvent event, Emitter< AuthenticationState > emit,) async
Future< void > _onSignOutEvent(SignOutEvent event, Emitter< AuthenticationState > emit,) async
final _checkBiometricAuthAvailabilityUseCase
Future< void > setupAfterAuthentication(SessionEntity session) async
sealed class DocumentState extends Equatable failure