Aidra Connect 10.0.2+16
Aidra Connect Mobile Application
Loading...
Searching...
No Matches
authentication_repository_impl.dart
Go to the documentation of this file.
1import 'package:connect/features/authentication/domain/entities/credentials_entity.dart';
2import 'package:dartz/dartz.dart';
3
4import '../../../../core/errors/exception_failure_adapter.dart';
5import '../../../../core/errors/failures.dart';
6import '../../../../core/services/service_locator.dart';
7import '../../domain/repository/authentication_repository.dart';
8import '../data_source/local_datasource/credentials_local_datasource.dart';
9import '../data_source/local_datasource/session_local_datasource.dart';
10import '../data_source/local_datasource/token_local_datasource.dart';
11import '../data_source/remote_datasource/authentication_remote_datasource.dart';
12import '../models/credentials_model.dart';
13import '../models/session_model.dart';
14
15class AuthenticationReposiptyImpl extends AuthenticationRepository {
20
21 @override
22 Future<Either<Failure, SessionModel>> singIn({
24 }) async {
25 try {
26 final credentials = CredentialsModel(
27 email: reqEntity.email,
28 password: reqEntity.password,
29 );
30 final response = await _remoteDataSource.signInWithCredentials(
32 );
33 final session = SessionModel.fromJson(response);
34 final token = session.token;
35 await _sessionLocalDataSource.saveSession(session: session);
36 await _tokenLocaldataDource.saveToken(token: token!);
37 await _credentialsLocalDataSource.saveCredentials(
39 );
40 return right(session);
41 } catch (e) {
42 print(e);
43 return left(ExceptionFailureAdapter.adapt(e));
44 }
45 }
46
47 @override
48 Future<Either<Failure, void>> signOut() async {
49 try {
50 await _sessionLocalDataSource.deleteSession();
51 await _tokenLocaldataDource.deleteToken();
52 return right(null);
53 } catch (e) {
54 return left(ExceptionFailureAdapter.adapt(e));
55 }
56 }
57
58 @override
59 Future<Either<Failure, SessionModel?>> loadSession() async {
60 try {
61 final user = await _sessionLocalDataSource.fetchSession();
62 return right(user);
63 } catch (e) {
64 return left(ExceptionFailureAdapter.adapt(e));
65 }
66 }
67
68 @override
69 Future<Either<Failure, CredentialsModel?>> loadCredentials() async {
70 try {
71 final credentials = await _credentialsLocalDataSource.fetchCredentials();
72 return right(credentials);
73 } catch (e) {
74 return left(ExceptionFailureAdapter.adapt(e));
75 }
76 }
77
78 @override
79 Future<Either<Failure, bool>> checkBiometricAuthAvailability() async {
80 try {
81 final credentials = await _credentialsLocalDataSource.fetchCredentials();
82 return right(credentials != null ? true : false);
83 } catch (e) {
84 return left(ExceptionFailureAdapter.adapt(e));
85 }
86 }
87}
sealed class AuthenticationEvent extends Equatable reqEntity
final class AuthenticatedState extends AuthenticationState credentials
override Future< Either< Failure, CredentialsModel?> > loadCredentials() async
override Future< Either< Failure, SessionModel?> > loadSession() async
override Future< Either< Failure, bool > > checkBiometricAuthAvailability() async
override Future< Either< Failure, SessionModel > > singIn({ required CredentialsEntity reqEntity, }) async
override Future< Either< Failure, void > > signOut() async
static Failure adapt(dynamic exception)
final sl
const SessionModel({ super.id, super.jsonrpc, super.parentId, super.processType, super.db, super.isAdmin, super.isSystem, super.name, super.partnerId, super.statusCode, super.supportUrl, super.uid, super.userContext, super.username, super.token, })