From 6c6e4068794935dcc26860e96e95b42d7ab25415 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 10 Nov 2023 10:48:05 +0700 Subject: [PATCH] TF-2271 Add `dnsLookupToGetJmapUrl` method in login repository/datasource Signed-off-by: dab246 (cherry picked from commit eb311420d9f7869af07605064a4e8d442486896a) --- .../data/datasource/login_datasource.dart | 14 ++ .../data/datasource/login_url_datasource.dart | 7 - .../datasource/login_username_datasource.dart | 7 - .../hive_login_datasource_impl.dart | 120 ++++++++++++++++++ .../login_datasource_impl.dart | 43 +++++++ .../login_url_datasource_impl.dart | 57 --------- .../login_username_datasource_impl.dart | 58 --------- .../repository/login_repository_impl.dart | 36 ++++++ .../repository/login_url_repository_impl.dart | 19 --- .../login_username_repository_impl.dart | 19 --- .../domain/repository/login_repository.dart | 14 ++ .../repository/login_url_repository.dart | 7 - .../repository/login_username_repository.dart | 7 - .../dns_lookup_to_get_jmap_url_state.dart | 18 +++ ...dns_lookup_to_get_jmap_url_interactor.dart | 21 +++ ...recent_login_url_on_mobile_interactor.dart | 13 +- ...t_login_username_on_mobile_interactor.dart | 15 ++- .../save_login_url_on_mobile_interactor.dart | 8 +- ...e_login_username_on_mobile_interactor.dart | 11 +- 19 files changed, 292 insertions(+), 202 deletions(-) create mode 100644 lib/features/login/data/datasource/login_datasource.dart delete mode 100644 lib/features/login/data/datasource/login_url_datasource.dart delete mode 100644 lib/features/login/data/datasource/login_username_datasource.dart create mode 100644 lib/features/login/data/datasource_impl/hive_login_datasource_impl.dart create mode 100644 lib/features/login/data/datasource_impl/login_datasource_impl.dart delete mode 100644 lib/features/login/data/datasource_impl/login_url_datasource_impl.dart delete mode 100644 lib/features/login/data/datasource_impl/login_username_datasource_impl.dart create mode 100644 lib/features/login/data/repository/login_repository_impl.dart delete mode 100644 lib/features/login/data/repository/login_url_repository_impl.dart delete mode 100644 lib/features/login/data/repository/login_username_repository_impl.dart create mode 100644 lib/features/login/domain/repository/login_repository.dart delete mode 100644 lib/features/login/domain/repository/login_url_repository.dart delete mode 100644 lib/features/login/domain/repository/login_username_repository.dart create mode 100644 lib/features/login/domain/state/dns_lookup_to_get_jmap_url_state.dart create mode 100644 lib/features/login/domain/usecases/dns_lookup_to_get_jmap_url_interactor.dart diff --git a/lib/features/login/data/datasource/login_datasource.dart b/lib/features/login/data/datasource/login_datasource.dart new file mode 100644 index 000000000..c20fd6efa --- /dev/null +++ b/lib/features/login/data/datasource/login_datasource.dart @@ -0,0 +1,14 @@ +import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; + +abstract class LoginDataSource { + Future saveLoginUrl(RecentLoginUrl baseUrl); + + Future saveLoginUsername(RecentLoginUsername username); + + Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}); + + Future> getAllRecentLoginUsernamesLatest({int? limit, String? pattern}); + + Future dnsLookupToGetJmapUrl(String emailAddress); +} \ No newline at end of file diff --git a/lib/features/login/data/datasource/login_url_datasource.dart b/lib/features/login/data/datasource/login_url_datasource.dart deleted file mode 100644 index 93deff307..000000000 --- a/lib/features/login/data/datasource/login_url_datasource.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; - -abstract class LoginUrlDataSource { - Future saveLoginUrl(RecentLoginUrl baseUrl); - - Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}); -} \ No newline at end of file diff --git a/lib/features/login/data/datasource/login_username_datasource.dart b/lib/features/login/data/datasource/login_username_datasource.dart deleted file mode 100644 index 545e188b9..000000000 --- a/lib/features/login/data/datasource/login_username_datasource.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; - -abstract class LoginUsernameDataSource { - Future saveLoginUsername(RecentLoginUsername username); - - Future> getAllRecentLoginUsernamesLatest({int? limit, String? pattern}); -} \ No newline at end of file diff --git a/lib/features/login/data/datasource_impl/hive_login_datasource_impl.dart b/lib/features/login/data/datasource_impl/hive_login_datasource_impl.dart new file mode 100644 index 000000000..88085568f --- /dev/null +++ b/lib/features/login/data/datasource_impl/hive_login_datasource_impl.dart @@ -0,0 +1,120 @@ +import 'package:tmail_ui_user/features/caching/clients/recent_login_url_cache_client.dart'; +import 'package:tmail_ui_user/features/caching/clients/recent_login_username_cache_client.dart'; +import 'package:tmail_ui_user/features/login/data/datasource/login_datasource.dart'; +import 'package:tmail_ui_user/features/login/data/model/recent_login_url_cache.dart'; +import 'package:tmail_ui_user/features/login/data/model/recent_login_username_cache.dart'; +import 'package:tmail_ui_user/features/login/domain/extensions/list_recent_login_url_extension.dart'; +import 'package:tmail_ui_user/features/login/domain/extensions/list_recent_login_username_extension.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; +import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; + +class HiveLoginDataSourceImpl implements LoginDataSource { + + final RecentLoginUrlCacheClient _recentLoginUrlCacheClient; + final RecentLoginUsernameCacheClient _recentLoginUsernameCacheClient; + final ExceptionThrower _exceptionThrower; + + HiveLoginDataSourceImpl( + this._recentLoginUrlCacheClient, + this._recentLoginUsernameCacheClient, + this._exceptionThrower + ); + + @override + Future saveLoginUrl(RecentLoginUrl recentLoginUrl) { + return Future.sync(() async { + if (await _recentLoginUrlCacheClient.isExistItem(recentLoginUrl.url)) { + return await _recentLoginUrlCacheClient.updateItem( + recentLoginUrl.url, + recentLoginUrl.toRecentLoginUrlCache() + ); + } else { + return await _recentLoginUrlCacheClient.insertItem( + recentLoginUrl.url, + recentLoginUrl.toRecentLoginUrlCache() + ); + } + }).catchError(_exceptionThrower.throwException); + } + + @override + Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}) { + return Future.sync(() async { + final listRecentUrlCache = await _recentLoginUrlCacheClient.getAll(); + final listRecentUrl = listRecentUrlCache + .where((recentCache) => _filterRecentUrlCache(recentCache, pattern)) + .map((recentCache) => recentCache.toRecentLoginUrl()) + .toList(); + listRecentUrl.sortByCreationDate(); + + final newLimit = limit ?? 5; + + final newListRecentSUrl = listRecentUrl.length > newLimit + ? listRecentUrl.sublist(0, newLimit) + : listRecentUrl; + + return newListRecentSUrl; + }).catchError(_exceptionThrower.throwException); + } + + bool _filterRecentUrlCache(RecentLoginUrlCache recentLoginUrlCache, String? pattern) { + if (pattern == null || pattern.trim().isEmpty) { + return true; + } else { + return recentLoginUrlCache.matchUrl(pattern); + } + } + + @override + Future> getAllRecentLoginUsernamesLatest({int? limit, String? pattern}) { + return Future.sync(() async { + final listRecentUsernameCache = await _recentLoginUsernameCacheClient.getAll(); + final listValidRecentUsername = listRecentUsernameCache + .where((recentCache) => _filterRecentLoginUsernameCache(recentCache, pattern)) + .map((recentCache) => recentCache.toRecentLoginUsername()) + .toList(); + + listValidRecentUsername.sortByCreationDate(); + + final newLimit = limit ?? 5; + + return listValidRecentUsername.length > newLimit + ? listValidRecentUsername.sublist(0, newLimit) + : listValidRecentUsername; + }).catchError(_exceptionThrower.throwException); + } + + @override + Future saveLoginUsername(RecentLoginUsername recentLoginUsername) { + return Future.sync(() async { + if (await _recentLoginUsernameCacheClient.isExistItem(recentLoginUsername.username)) { + return await _recentLoginUsernameCacheClient.updateItem( + recentLoginUsername.username, + recentLoginUsername.toRecentLoginUsernameCache() + ); + } else { + return await _recentLoginUsernameCacheClient.insertItem( + recentLoginUsername.username, + recentLoginUsername.toRecentLoginUsernameCache() + ); + } + }).catchError(_exceptionThrower.throwException); + } + + bool _filterRecentLoginUsernameCache( + RecentLoginUsernameCache recentLoginUsernameCache, + String? pattern + ) { + if (pattern == null || pattern.trim().isEmpty) { + return true; + } else { + return recentLoginUsernameCache.matchUsername(pattern); + } + } + + @override + Future dnsLookupToGetJmapUrl(String emailAddress) { + throw UnimplementedError(); + } +} \ No newline at end of file diff --git a/lib/features/login/data/datasource_impl/login_datasource_impl.dart b/lib/features/login/data/datasource_impl/login_datasource_impl.dart new file mode 100644 index 000000000..d1f9c0bdf --- /dev/null +++ b/lib/features/login/data/datasource_impl/login_datasource_impl.dart @@ -0,0 +1,43 @@ +import 'package:tmail_ui_user/features/login/data/datasource/login_datasource.dart'; +import 'package:tmail_ui_user/features/login/data/network/dns_service.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; +import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; + +class LoginDataSourceImpl implements LoginDataSource { + + final DNSService _dnsService; + final ExceptionThrower _exceptionThrower; + + LoginDataSourceImpl( + this._dnsService, + this._exceptionThrower + ); + + @override + Future dnsLookupToGetJmapUrl(String emailAddress) { + return Future.sync(() async { + return await _dnsService.getJmapUrl(emailAddress); + }).catchError(_exceptionThrower.throwException); + } + + @override + Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}) { + throw UnimplementedError(); + } + + @override + Future> getAllRecentLoginUsernamesLatest({int? limit, String? pattern}) { + throw UnimplementedError(); + } + + @override + Future saveLoginUrl(RecentLoginUrl baseUrl) { + throw UnimplementedError(); + } + + @override + Future saveLoginUsername(RecentLoginUsername username) { + throw UnimplementedError(); + } +} \ No newline at end of file diff --git a/lib/features/login/data/datasource_impl/login_url_datasource_impl.dart b/lib/features/login/data/datasource_impl/login_url_datasource_impl.dart deleted file mode 100644 index 565ab0272..000000000 --- a/lib/features/login/data/datasource_impl/login_url_datasource_impl.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:tmail_ui_user/features/caching/clients/recent_login_url_cache_client.dart'; -import 'package:tmail_ui_user/features/login/data/datasource/login_url_datasource.dart'; -import 'package:tmail_ui_user/features/login/data/model/recent_login_url_cache.dart'; -import 'package:tmail_ui_user/features/login/domain/extensions/list_recent_login_url_extension.dart'; -import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; -import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; - -class LoginUrlDataSourceImpl implements LoginUrlDataSource { - - final RecentLoginUrlCacheClient _recentLoginUrlCacheClient; - final ExceptionThrower _exceptionThrower; - - LoginUrlDataSourceImpl(this._recentLoginUrlCacheClient, this._exceptionThrower); - - @override - Future saveLoginUrl(RecentLoginUrl recentLoginUrl) { - return Future.sync(() async { - if (await _recentLoginUrlCacheClient.isExistItem(recentLoginUrl.url)) { - await _recentLoginUrlCacheClient.updateItem( - recentLoginUrl.url, - recentLoginUrl.toRecentLoginUrlCache()); - } else { - await _recentLoginUrlCacheClient.insertItem( - recentLoginUrl.url, - recentLoginUrl.toRecentLoginUrlCache()); - } - }).catchError(_exceptionThrower.throwException); - } - - @override - Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}) { - return Future.sync(() async { - final listRecentUrlCache = await _recentLoginUrlCacheClient.getAll(); - final listRecentUrl = listRecentUrlCache - .where((recentCache) => _filterRecentUrlCache(recentCache, pattern)) - .map((recentCache) => recentCache.toRecentLoginUrl()) - .toList(); - listRecentUrl.sortByCreationDate(); - - final newLimit = limit ?? 5; - - final newListRecentSUrl = listRecentUrl.length > newLimit - ? listRecentUrl.sublist(0, newLimit) - : listRecentUrl; - - return newListRecentSUrl; - }).catchError(_exceptionThrower.throwException); - } - - bool _filterRecentUrlCache(RecentLoginUrlCache recentLoginUrlCache, String? pattern) { - if (pattern == null || pattern.trim().isEmpty) { - return true; - } else { - return recentLoginUrlCache.matchUrl(pattern); - } - } -} \ No newline at end of file diff --git a/lib/features/login/data/datasource_impl/login_username_datasource_impl.dart b/lib/features/login/data/datasource_impl/login_username_datasource_impl.dart deleted file mode 100644 index 230486581..000000000 --- a/lib/features/login/data/datasource_impl/login_username_datasource_impl.dart +++ /dev/null @@ -1,58 +0,0 @@ -import 'package:tmail_ui_user/features/caching/clients/recent_login_username_cache_client.dart'; -import 'package:tmail_ui_user/features/login/data/datasource/login_username_datasource.dart'; -import 'package:tmail_ui_user/features/login/data/model/recent_login_username_cache.dart'; -import 'package:tmail_ui_user/features/login/domain/extensions/list_recent_login_username_extension.dart'; -import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; -import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; - -class LoginUsernameDataSourceImpl implements LoginUsernameDataSource { - - final RecentLoginUsernameCacheClient _recentLoginUsernameCacheClient; - final ExceptionThrower _exceptionThrower; - - LoginUsernameDataSourceImpl(this._recentLoginUsernameCacheClient, this._exceptionThrower); - - @override - Future> getAllRecentLoginUsernamesLatest({int? limit, String? pattern}) { - return Future.sync(() async { - final listRecentUsernameCache = await _recentLoginUsernameCacheClient.getAll(); - final listValidRecentUsername = listRecentUsernameCache - .where((recentCache) => _filterRecentLoginUsernameCache(recentCache, pattern)) - .map((recentCache) => recentCache.toRecentLoginUsername()) - .toList(); - - listValidRecentUsername.sortByCreationDate(); - - final newLimit = limit ?? 5; - - return listValidRecentUsername.length > newLimit - ? listValidRecentUsername.sublist(0, newLimit) - : listValidRecentUsername; - }).catchError(_exceptionThrower.throwException); - } - - @override - Future saveLoginUsername(RecentLoginUsername recentLoginUsername) { - return Future.sync(() async { - if (await _recentLoginUsernameCacheClient - .isExistItem(recentLoginUsername.username)) { - await _recentLoginUsernameCacheClient.updateItem(recentLoginUsername.username, - recentLoginUsername.toRecentLoginUsernameCache()); - } else { - await _recentLoginUsernameCacheClient.insertItem(recentLoginUsername.username, - recentLoginUsername.toRecentLoginUsernameCache()); - } - }).catchError(_exceptionThrower.throwException); - } - - bool _filterRecentLoginUsernameCache( - RecentLoginUsernameCache recentLoginUsernameCache, - String? pattern - ) { - if (pattern == null || pattern.trim().isEmpty) { - return true; - } else { - return recentLoginUsernameCache.matchUsername(pattern); - } - } -} diff --git a/lib/features/login/data/repository/login_repository_impl.dart b/lib/features/login/data/repository/login_repository_impl.dart new file mode 100644 index 000000000..ab4aa72c4 --- /dev/null +++ b/lib/features/login/data/repository/login_repository_impl.dart @@ -0,0 +1,36 @@ +import 'package:core/core.dart'; +import 'package:tmail_ui_user/features/login/data/datasource/login_datasource.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/login_repository.dart'; + +class LoginRepositoryImpl implements LoginRepository { + final Map _loginDataSource; + + LoginRepositoryImpl(this._loginDataSource); + + @override + Future saveRecentLoginUrl(RecentLoginUrl recentLogin) { + return _loginDataSource[DataSourceType.hiveCache]!.saveLoginUrl(recentLogin); + } + + @override + Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}) { + return _loginDataSource[DataSourceType.hiveCache]!.getAllRecentLoginUrlLatest(limit: limit, pattern: pattern); + } + + @override + Future> getAllRecentLoginUsernameLatest({int? limit, String? pattern}) { + return _loginDataSource[DataSourceType.hiveCache]!.getAllRecentLoginUsernamesLatest(limit: limit, pattern: pattern); + } + + @override + Future saveLoginUsername(RecentLoginUsername recentLoginUsername) { + return _loginDataSource[DataSourceType.hiveCache]!.saveLoginUsername(recentLoginUsername); + } + + @override + Future dnsLookupToGetJmapUrl(String emailAddress) { + return _loginDataSource[DataSourceType.network]!.dnsLookupToGetJmapUrl(emailAddress); + } +} \ No newline at end of file diff --git a/lib/features/login/data/repository/login_url_repository_impl.dart b/lib/features/login/data/repository/login_url_repository_impl.dart deleted file mode 100644 index 9745334df..000000000 --- a/lib/features/login/data/repository/login_url_repository_impl.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:tmail_ui_user/features/login/data/datasource/login_url_datasource.dart'; -import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/login_url_repository.dart'; - -class LoginUrlRepositoryImpl implements LoginUrlRepository { - final LoginUrlDataSource loginInfoDataSource; - - LoginUrlRepositoryImpl(this.loginInfoDataSource); - - @override - Future saveRecentLoginUrl(RecentLoginUrl recentLogin) { - return loginInfoDataSource.saveLoginUrl(recentLogin); - } - - @override - Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}) { - return loginInfoDataSource.getAllRecentLoginUrlLatest(limit: limit, pattern: pattern); - } -} \ No newline at end of file diff --git a/lib/features/login/data/repository/login_username_repository_impl.dart b/lib/features/login/data/repository/login_username_repository_impl.dart deleted file mode 100644 index e2a94df2a..000000000 --- a/lib/features/login/data/repository/login_username_repository_impl.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:tmail_ui_user/features/login/data/datasource/login_username_datasource.dart'; -import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/login_username_repository.dart'; - -class LoginUsernameRepositoryImpl implements LoginUsernameRepository { - final LoginUsernameDataSource loginUsernameDatasource; - - LoginUsernameRepositoryImpl(this.loginUsernameDatasource); - - @override - Future> getAllRecentLoginUsernameLatest({int? limit, String? pattern}) { - return loginUsernameDatasource.getAllRecentLoginUsernamesLatest(limit: limit, pattern: pattern); - } - - @override - Future saveLoginUsername(RecentLoginUsername recentLoginUsername) { - return loginUsernameDatasource.saveLoginUsername(recentLoginUsername); - } -} \ No newline at end of file diff --git a/lib/features/login/domain/repository/login_repository.dart b/lib/features/login/domain/repository/login_repository.dart new file mode 100644 index 000000000..4a83122ca --- /dev/null +++ b/lib/features/login/domain/repository/login_repository.dart @@ -0,0 +1,14 @@ +import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; +import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; + +abstract class LoginRepository { + Future saveRecentLoginUrl(RecentLoginUrl recentLoginUrl); + + Future saveLoginUsername(RecentLoginUsername recentLoginUsername); + + Future> getAllRecentLoginUsernameLatest({int? limit, String? pattern}); + + Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}); + + Future dnsLookupToGetJmapUrl(String emailAddress); +} \ No newline at end of file diff --git a/lib/features/login/domain/repository/login_url_repository.dart b/lib/features/login/domain/repository/login_url_repository.dart deleted file mode 100644 index 50c2701c3..000000000 --- a/lib/features/login/domain/repository/login_url_repository.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; - -abstract class LoginUrlRepository { - Future saveRecentLoginUrl(RecentLoginUrl recentLoginUrl); - - Future> getAllRecentLoginUrlLatest({int? limit, String? pattern}); -} \ No newline at end of file diff --git a/lib/features/login/domain/repository/login_username_repository.dart b/lib/features/login/domain/repository/login_username_repository.dart deleted file mode 100644 index e8e934cf5..000000000 --- a/lib/features/login/domain/repository/login_username_repository.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; - -abstract class LoginUsernameRepository { - Future saveLoginUsername(RecentLoginUsername recentLoginUsername); - - Future> getAllRecentLoginUsernameLatest({int? limit, String? pattern}); -} \ No newline at end of file diff --git a/lib/features/login/domain/state/dns_lookup_to_get_jmap_url_state.dart b/lib/features/login/domain/state/dns_lookup_to_get_jmap_url_state.dart new file mode 100644 index 000000000..89835772b --- /dev/null +++ b/lib/features/login/domain/state/dns_lookup_to_get_jmap_url_state.dart @@ -0,0 +1,18 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; + +class DNSLookupToGetJmapUrlLoading extends LoadingState {} + +class DNSLookupToGetJmapUrlSuccess extends UIState { + final String jmapUrl; + + DNSLookupToGetJmapUrlSuccess(this.jmapUrl); + + @override + List get props => [jmapUrl]; +} + +class DNSLookupToGetJmapUrlFailure extends FeatureFailure { + + DNSLookupToGetJmapUrlFailure(dynamic exception) : super(exception: exception); +} \ No newline at end of file diff --git a/lib/features/login/domain/usecases/dns_lookup_to_get_jmap_url_interactor.dart b/lib/features/login/domain/usecases/dns_lookup_to_get_jmap_url_interactor.dart new file mode 100644 index 000000000..948e8af94 --- /dev/null +++ b/lib/features/login/domain/usecases/dns_lookup_to_get_jmap_url_interactor.dart @@ -0,0 +1,21 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/login_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/state/dns_lookup_to_get_jmap_url_state.dart'; + +class DNSLookupToGetJmapUrlInteractor { + final LoginRepository _loginRepository; + + DNSLookupToGetJmapUrlInteractor(this._loginRepository); + + Stream> execute(String emailAddress) async* { + try { + yield Right(DNSLookupToGetJmapUrlLoading()); + final jmapUrl = await _loginRepository.dnsLookupToGetJmapUrl(emailAddress); + yield Right(DNSLookupToGetJmapUrlSuccess(jmapUrl)); + } catch (e) { + yield Left(DNSLookupToGetJmapUrlFailure(e)); + } + } +} \ No newline at end of file diff --git a/lib/features/login/domain/usecases/get_all_recent_login_url_on_mobile_interactor.dart b/lib/features/login/domain/usecases/get_all_recent_login_url_on_mobile_interactor.dart index e72152069..916c3e1f3 100644 --- a/lib/features/login/domain/usecases/get_all_recent_login_url_on_mobile_interactor.dart +++ b/lib/features/login/domain/usecases/get_all_recent_login_url_on_mobile_interactor.dart @@ -1,19 +1,20 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/login_url_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/login_repository.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_all_recent_login_url_latest_state.dart'; class GetAllRecentLoginUrlOnMobileInteractor { - final LoginUrlRepository _loginUrlRepository; + final LoginRepository _loginRepository; - GetAllRecentLoginUrlOnMobileInteractor(this._loginUrlRepository); + GetAllRecentLoginUrlOnMobileInteractor(this._loginRepository); Future> execute({int? limit, String? pattern}) async { try{ - final listRecentUrl = await _loginUrlRepository.getAllRecentLoginUrlLatest( - limit: limit, - pattern: pattern); + final listRecentUrl = await _loginRepository.getAllRecentLoginUrlLatest( + limit: limit, + pattern: pattern + ); return Right(GetAllRecentLoginUrlLatestSuccess(listRecentUrl)); } catch(e) { return Left(GetAllRecentLoginUrlLatestFailure(e)); diff --git a/lib/features/login/domain/usecases/get_all_recent_login_username_on_mobile_interactor.dart b/lib/features/login/domain/usecases/get_all_recent_login_username_on_mobile_interactor.dart index aee585f0f..2fd9e8fe5 100644 --- a/lib/features/login/domain/usecases/get_all_recent_login_username_on_mobile_interactor.dart +++ b/lib/features/login/domain/usecases/get_all_recent_login_username_on_mobile_interactor.dart @@ -1,17 +1,20 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/login_username_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/login_repository.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_all_recent_login_username_state.dart'; class GetAllRecentLoginUsernameOnMobileInteractor { - final LoginUsernameRepository loginUsernameRepository; + final LoginRepository _loginRepository; - GetAllRecentLoginUsernameOnMobileInteractor(this.loginUsernameRepository); + GetAllRecentLoginUsernameOnMobileInteractor(this._loginRepository); Future> execute({int? limit, String? pattern}) async { try { - final listRecent = await loginUsernameRepository.getAllRecentLoginUsernameLatest( - limit: limit, pattern: pattern); + final listRecent = await _loginRepository.getAllRecentLoginUsernameLatest( + limit: limit, + pattern: pattern + ); return Right(GetAllRecentLoginUsernameLatestSuccess(listRecent)); } catch (exception) { return Left(GetAllRecentLoginUsernameLatestFailure(exception)); diff --git a/lib/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart b/lib/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart index 235f366a7..33e89e261 100644 --- a/lib/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart +++ b/lib/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart @@ -2,17 +2,17 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/login_url_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/login_repository.dart'; import 'package:tmail_ui_user/features/login/domain/state/save_recent_login_url_state.dart'; class SaveLoginUrlOnMobileInteractor { - final LoginUrlRepository loginUrlRepository; + final LoginRepository _loginRepository; - SaveLoginUrlOnMobileInteractor(this.loginUrlRepository); + SaveLoginUrlOnMobileInteractor(this._loginRepository); Future> execute(RecentLoginUrl recentLoginUrl) async { try{ - await loginUrlRepository.saveRecentLoginUrl(recentLoginUrl); + await _loginRepository.saveRecentLoginUrl(recentLoginUrl); return Right(SaveRecentLoginUrlSuccess()); } catch(e) { return Left(SaveRecentLoginUrlFailed(e)); diff --git a/lib/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart b/lib/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart index 41597ba25..c0e1b784a 100644 --- a/lib/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart +++ b/lib/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart @@ -1,17 +1,18 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/login_username_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/login_repository.dart'; import 'package:tmail_ui_user/features/login/domain/state/save_recent_login_username_state.dart'; class SaveLoginUsernameOnMobileInteractor { - final LoginUsernameRepository loginUsernameRepository; + final LoginRepository _loginRepository; - SaveLoginUsernameOnMobileInteractor(this.loginUsernameRepository); + SaveLoginUsernameOnMobileInteractor(this._loginRepository); Future> execute(RecentLoginUsername recentLoginUsername) async { try { - await loginUsernameRepository.saveLoginUsername(recentLoginUsername); + await _loginRepository.saveLoginUsername(recentLoginUsername); return Right(SaveRecentLoginUsernameSuccess()); } catch(exception) { return Left(SaveRecentLoginUsernameFailed(exception));