TF-571 Store account after authenticate user with basicAuth

This commit is contained in:
Dat PHAM HOANG
2022-05-31 14:32:07 +07:00
committed by Dat H. Pham
parent 471465e1bc
commit 328ff2c4f0
3 changed files with 15 additions and 6 deletions
@@ -18,7 +18,7 @@ class CredentialRepositoryImpl extends CredentialRepository {
@override @override
Future saveBaseUrl(Uri baseUrl) async { Future saveBaseUrl(Uri baseUrl) async {
await sharedPreferences.setString(LoginConstant.keyBaseUrl, baseUrl.origin); await sharedPreferences.setString(LoginConstant.keyBaseUrl, baseUrl.toString());
} }
@override @override
@@ -1,6 +1,7 @@
import 'package:core/core.dart'; import 'package:core/core.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'package:model/model.dart'; import 'package:model/model.dart';
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_repository.dart'; import 'package:tmail_ui_user/features/login/domain/repository/authentication_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart'; import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/authentication_user_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/authentication_user_state.dart';
@@ -8,20 +9,28 @@ import 'package:tmail_ui_user/features/login/domain/state/authentication_user_st
class AuthenticationInteractor { class AuthenticationInteractor {
final AuthenticationRepository authenticationRepository; final AuthenticationRepository authenticationRepository;
final CredentialRepository credentialRepository; final CredentialRepository credentialRepository;
final AccountRepository _accountRepository;
AuthenticationInteractor(this.authenticationRepository, this.credentialRepository); AuthenticationInteractor(this.authenticationRepository, this.credentialRepository, this._accountRepository);
Future<Either<Failure, Success>> execute(Uri baseUrl, UserName userName, Password password) async { Future<Either<Failure, Success>> execute(Uri baseUrl, UserName userName, Password password) async {
try { try {
log('AuthenticationInteractor::execute(): $_accountRepository');
final user = await authenticationRepository.authenticationUser(baseUrl, userName, password); final user = await authenticationRepository.authenticationUser(baseUrl, userName, password);
await Future.wait([ await Future.wait([
credentialRepository.saveBaseUrl(baseUrl), credentialRepository.saveBaseUrl(baseUrl),
credentialRepository.saveUserName(userName), credentialRepository.saveUserName(userName),
credentialRepository.savePassword(password), credentialRepository.savePassword(password),
credentialRepository.saveUserProfile(user), credentialRepository.saveUserProfile(user),
_accountRepository.setCurrentAccount(Account(
userName.userName,
AuthenticationType.basic,
isSelected: true
))
]); ]);
return Right(AuthenticationUserViewState(user)); return Right(AuthenticationUserViewState(user));
} catch (e) { } catch (e) {
logError('AuthenticationInteractor::execute(): $e');
return Left(AuthenticationUserFailure(e)); return Left(AuthenticationUserFailure(e));
} }
} }
@@ -1,10 +1,10 @@
import 'dart:core';
import 'package:core/core.dart'; import 'package:core/core.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart'; import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
import 'dart:core';
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
import 'package:tmail_ui_user/features/login/domain/extensions/uri_extension.dart'; import 'package:tmail_ui_user/features/login/domain/extensions/uri_extension.dart';
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/get_credential_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_credential_state.dart';
class GetCredentialInteractor { class GetCredentialInteractor {
@@ -20,7 +20,7 @@ class GetCredentialInteractor {
if (isCredentialValid(baseUrl)) { if (isCredentialValid(baseUrl)) {
return Right(GetCredentialViewState(baseUrl, userName, password)); return Right(GetCredentialViewState(baseUrl, userName, password));
} else { } else {
return Left(GetCredentialFailure(BadCredentials())); return Left(GetCredentialFailure(const BadCredentials()));
} }
} catch (exception) { } catch (exception) {
return Left(GetCredentialFailure(exception)); return Left(GetCredentialFailure(exception));