Init login feature add domain layer

This commit is contained in:
dab246
2021-07-27 12:54:40 +07:00
committed by Dat H. Pham
parent 360ab9a501
commit f17d6630a5
8 changed files with 147 additions and 0 deletions
@@ -0,0 +1,27 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:model/model.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/state/authentication_user_state.dart';
class AuthenticationInteractor {
final AuthenticationRepository authenticationRepository;
final CredentialRepository credentialRepository;
AuthenticationInteractor(this.authenticationRepository, this.credentialRepository);
Future<Either<Failure, Success>> execute(Uri baseUrl, UserName userName, Password password) async {
try {
final user = await authenticationRepository.authenticationUser(baseUrl, userName, password);
await Future.wait([
credentialRepository.saveBaseUrl(baseUrl),
credentialRepository.saveUserName(userName),
credentialRepository.savePassword(password)
]);
return Right(AuthenticationUserViewState(user));
} catch (e) {
return Left(AuthenticationUserFailure(e));
}
}
}
@@ -0,0 +1,31 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.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/state/get_credential_state.dart';
class GetCredentialInteractor {
final CredentialRepository credentialRepository;
GetCredentialInteractor(this.credentialRepository);
Future<Either<Failure, Success>> execute() async {
try {
final baseUrl = await credentialRepository.getBaseUrl();
final userName = await credentialRepository.getUserName();
final password = await credentialRepository.getPassword();
if (isCredentialValid(baseUrl)) {
return Right(GetCredentialViewState(baseUrl, userName, password));
} else {
return Left(GetCredentialFailure(BadCredentials()));
}
} catch (exception) {
return Left(GetCredentialFailure(exception));
}
}
bool isCredentialValid(Uri baseUrl) => baseUrl.isBaseUrlValid();
}