Aidra Driver 1.3.5+68
Aidra Driver - Your path to green energy
Loading...
Searching...
No Matches
authentication_bloc.dart
Go to the documentation of this file.
1import 'package:equatable/equatable.dart';
2import 'package:flutter_bloc/flutter_bloc.dart';
3
4import '../../../../../core/common/use_case/use_case.dart';
5import '../../../../../core/error/failures.dart';
6import '../../../../../core/services/service_locator.dart';
7import '../../../domain/entities/credentials_entity.dart';
8import '../../../domain/entities/session_entity.dart';
9import '../../../domain/use_cases/check_biometric_auth_availability_usecase.dart';
10import '../../../domain/use_cases/fast_sign_in_usecase.dart';
11import '../../../domain/use_cases/load_credentials_usecase.dart';
12import '../../../domain/use_cases/load_session_usecase.dart';
13import '../../../domain/use_cases/signin_usecases.dart';
14import '../../../domain/use_cases/signout_usecase.dart';
15
16part 'authentication_event.dart';
17part 'authentication_state.dart';
18
19class AuthenticationBloc extends Bloc<AuthenticationEvent, AuthenticationState> {
26
27 AuthenticationBloc() : super(AuthenticationInitialState()) {
28 on<SignInEvent>(_onSignInEvent);
29 on<SignOutEvent>(_onSignOutEvent);
30 on<LoadCredentialsEvent>(_onLoadCredentialsEvent);
31 on<LoadSessionEvent>(_onLoadSessionEvent);
32 on<CheckBiometricAuthenticationAvailabilityEvent>(_onCheckBiometricAuthenticationAvailabilityEvent);
33 on<LoadEmailEvent>(_onloadEmailEvent);
34 on<FastSignInEvent>(_onFastSignInEvent);
35 }
36
37 Future<void> _onloadEmailEvent(
38 LoadEmailEvent event,
39 Emitter<AuthenticationState> emit,
40 ) async {
41 final results = await _loadUserCredentialsUseCase(NoParams());
42 results.fold(
44 (credentials) => emit(EmailLoadedState(email: credentials?.email)),
45 );
46 }
47
48 Future<void> _onSignInEvent(
49 SignInEvent event,
50 Emitter<AuthenticationState> emit,
51 ) async {
52 emit(AuthenticatingState());
53 final results = await _signInUseCase(event.reqEntity);
54 results.fold(
56 (session) => emit(AuthenticatedState(session: session)),
57 );
58 }
59
60 Future<void> _onFastSignInEvent(
61 FastSignInEvent event,
62 Emitter<AuthenticationState> emit,
63 ) async {
64 emit(FastSignInLoading());
65 final results = await _fastSignInUseCase(event.reqEntity);
66 results.fold(
68 (session) => emit(FastSignInLoaded()),
69 );
70 }
71
72 Future<void> _onSignOutEvent(
73 SignOutEvent event,
74 Emitter<AuthenticationState> emit,
75 ) async {
76 final results = await _signOutUseCase(NoParams());
77 results.fold(
79 (_) => emit(UnauthenticatedState()),
80 );
81 }
82
83 Future<void> _onLoadSessionEvent(
84 LoadSessionEvent event,
85 Emitter<AuthenticationState> emit,
86 ) async {
87 final results = await _loadSessionUseCase(NoParams());
88 results.fold(
90 (session) {
91 emit(
92 session == null
93 ? UnauthenticatedState()
94 : AuthenticatedState(session: session),
95 );
96 },
97 );
98 }
99
101 LoadCredentialsEvent event,
102 Emitter<AuthenticationState> emit,
103 ) async {
104 final results = await _loadUserCredentialsUseCase(NoParams());
105 results.fold(
108 );
109 }
110
112 CheckBiometricAuthenticationAvailabilityEvent event,
113 Emitter<AuthenticationState> emit,
114 ) async {
115 final results = await _checkBiometricAuthAvailabilityUseCase(NoParams());
116 results.fold(
117 (failure) => emit(BiometricAuthUnavailable()),
118 (isAvailable) {
119 emit(
120 isAvailable ? BiometricAuthAvailable() : BiometricAuthUnavailable(),
121 );
122 },
123 );
124 }
125}
AuthGuard _()
const SignInEvent({required this.reqEntity})
const FastSignInEvent({required this.reqEntity})
final class AuthenticatedState extends AuthenticationState credentials
sealed class AuthenticationState extends Equatable failure
const CredentialsLoadedState({required this.credentials})
const FastSignInFailed({required this.failure})
const AuthenticationFailureState({required this.failure})
Future< void > _onCheckBiometricAuthenticationAvailabilityEvent(CheckBiometricAuthenticationAvailabilityEvent event, Emitter< AuthenticationState > emit,) async
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
Future< void > _onFastSignInEvent(FastSignInEvent event, Emitter< AuthenticationState > emit,) async
final sl