From 927151ec8e4a1ba2e379b4f15c7ed7182c2f5a3c Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 11 Nov 2022 04:08:28 +0700 Subject: [PATCH] TF-898 Create repository/datasource for rule filter --- .../datasource/manage_account_datasource.dart | 14 ----- .../datasource/rule_filter_datasource.dart | 15 +++++ .../manage_account_datasource_impl.dart | 47 --------------- .../rule_filter_datasource_impl.dart | 59 +++++++++++++++++++ ..._account_api.dart => rule_filter_api.dart} | 4 +- .../manage_account_repository_impl.dart | 25 -------- .../rule_filter_repository_impl.dart | 35 +++++++++++ .../repository/manage_account_repository.dart | 14 ----- .../repository/rule_filter_repository.dart | 15 +++++ ...eate_new_email_rule_filter_interactor.dart | 8 +-- .../delete_email_rule_interactor.dart | 8 +-- .../edit_email_rule_filter_interactor.dart | 8 +-- .../usecases/get_all_rules_interactor.dart | 8 +-- 13 files changed, 142 insertions(+), 118 deletions(-) create mode 100644 lib/features/manage_account/data/datasource/rule_filter_datasource.dart create mode 100644 lib/features/manage_account/data/datasource_impl/rule_filter_datasource_impl.dart rename lib/features/manage_account/data/network/{manage_account_api.dart => rule_filter_api.dart} (97%) create mode 100644 lib/features/manage_account/data/repository/rule_filter_repository_impl.dart create mode 100644 lib/features/manage_account/domain/repository/rule_filter_repository.dart diff --git a/lib/features/manage_account/data/datasource/manage_account_datasource.dart b/lib/features/manage_account/data/datasource/manage_account_datasource.dart index 03efa0894..a04784535 100644 --- a/lib/features/manage_account/data/datasource/manage_account_datasource.dart +++ b/lib/features/manage_account/data/datasource/manage_account_datasource.dart @@ -1,19 +1,5 @@ import 'dart:ui'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:rule_filter/rule_filter/tmail_rule.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; - abstract class ManageAccountDataSource { Future persistLanguage(Locale localeCurrent); - - Future> getAllTMailRule(AccountId accountId); - - Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest); - - Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest); - - Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest); } \ No newline at end of file diff --git a/lib/features/manage_account/data/datasource/rule_filter_datasource.dart b/lib/features/manage_account/data/datasource/rule_filter_datasource.dart new file mode 100644 index 000000000..fefd6e17b --- /dev/null +++ b/lib/features/manage_account/data/datasource/rule_filter_datasource.dart @@ -0,0 +1,15 @@ +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:rule_filter/rule_filter/tmail_rule.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; + +abstract class RuleFilterDataSource { + Future> getAllTMailRule(AccountId accountId); + + Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest); + + Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest); + + Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest); +} \ No newline at end of file diff --git a/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart b/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart index 6c82d6703..f395927bb 100644 --- a/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart +++ b/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart @@ -1,23 +1,15 @@ import 'dart:ui'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:rule_filter/rule_filter/tmail_rule.dart'; import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart'; import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart'; -import 'package:tmail_ui_user/features/manage_account/data/network/manage_account_api.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; class ManageAccountDataSourceImpl extends ManageAccountDataSource { - final ManageAccountAPI manageAccountAPI; final LanguageCacheManager _languageCacheManager; final ExceptionThrower _exceptionThrower; ManageAccountDataSourceImpl( - this.manageAccountAPI, this._languageCacheManager, this._exceptionThrower ); @@ -30,43 +22,4 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource { _exceptionThrower.throwException(error); }); } - - @override - Future> getAllTMailRule(AccountId accountId) { - return Future.sync(() async { - return await manageAccountAPI.getListTMailRule(accountId); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } - - @override - Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest) { - - deleteEmailRuleRequest.currentEmailRules.remove(deleteEmailRuleRequest.emailRuleDelete); - - return Future.sync(() async { - return await manageAccountAPI.updateListTMailRule(accountId, deleteEmailRuleRequest.currentEmailRules); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } - - @override - Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest) { - return Future.sync(() async { - return await manageAccountAPI.updateListTMailRule(accountId, ruleFilterRequest.newListTMailRules); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } - - @override - Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest) { - return Future.sync(() async { - return await manageAccountAPI.updateListTMailRule(accountId, ruleFilterRequest.listTMailRulesUpdated); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } } \ No newline at end of file diff --git a/lib/features/manage_account/data/datasource_impl/rule_filter_datasource_impl.dart b/lib/features/manage_account/data/datasource_impl/rule_filter_datasource_impl.dart new file mode 100644 index 000000000..8f6909cde --- /dev/null +++ b/lib/features/manage_account/data/datasource_impl/rule_filter_datasource_impl.dart @@ -0,0 +1,59 @@ + +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:rule_filter/rule_filter/tmail_rule.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/rule_filter_datasource.dart'; +import 'package:tmail_ui_user/features/manage_account/data/network/rule_filter_api.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; +import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; + +class RuleFilterDataSourceImpl extends RuleFilterDataSource { + + final RuleFilterAPI _ruleFilterAPI; + final ExceptionThrower _exceptionThrower; + + RuleFilterDataSourceImpl( + this._ruleFilterAPI, + this._exceptionThrower + ); + + @override + Future> getAllTMailRule(AccountId accountId) { + return Future.sync(() async { + return await _ruleFilterAPI.getListTMailRule(accountId); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } + + @override + Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest) { + + deleteEmailRuleRequest.currentEmailRules.remove(deleteEmailRuleRequest.emailRuleDelete); + + return Future.sync(() async { + return await _ruleFilterAPI.updateListTMailRule(accountId, deleteEmailRuleRequest.currentEmailRules); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } + + @override + Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest) { + return Future.sync(() async { + return await _ruleFilterAPI.updateListTMailRule(accountId, ruleFilterRequest.newListTMailRules); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } + + @override + Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest) { + return Future.sync(() async { + return await _ruleFilterAPI.updateListTMailRule(accountId, ruleFilterRequest.listTMailRulesUpdated); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } +} \ No newline at end of file diff --git a/lib/features/manage_account/data/network/manage_account_api.dart b/lib/features/manage_account/data/network/rule_filter_api.dart similarity index 97% rename from lib/features/manage_account/data/network/manage_account_api.dart rename to lib/features/manage_account/data/network/rule_filter_api.dart index 484b04100..861cb5254 100644 --- a/lib/features/manage_account/data/network/manage_account_api.dart +++ b/lib/features/manage_account/data/network/rule_filter_api.dart @@ -11,11 +11,11 @@ import 'package:rule_filter/rule_filter/set/set_rule_filter_method.dart'; import 'package:rule_filter/rule_filter/tmail_rule.dart'; import 'package:tmail_ui_user/features/manage_account/data/extensions/list_tmail_rule_extensions.dart'; -class ManageAccountAPI { +class RuleFilterAPI { final HttpClient _httpClient; - ManageAccountAPI(this._httpClient); + RuleFilterAPI(this._httpClient); Future> getListTMailRule(AccountId accountId) async { final processingInvocation = ProcessingInvocation(); diff --git a/lib/features/manage_account/data/repository/manage_account_repository_impl.dart b/lib/features/manage_account/data/repository/manage_account_repository_impl.dart index 1902a668b..d33978915 100644 --- a/lib/features/manage_account/data/repository/manage_account_repository_impl.dart +++ b/lib/features/manage_account/data/repository/manage_account_repository_impl.dart @@ -1,11 +1,6 @@ import 'dart:ui'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:rule_filter/rule_filter/tmail_rule.dart'; import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; class ManageAccountRepositoryImpl extends ManageAccountRepository { @@ -18,24 +13,4 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository { Future persistLanguage(Locale localeCurrent) { return dataSource.persistLanguage(localeCurrent); } - - @override - Future> getAllTMailRule(AccountId accountId) { - return dataSource.getAllTMailRule(accountId); - } - - @override - Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest) { - return dataSource.deleteTMailRule(accountId, deleteEmailRuleRequest); - } - - @override - Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest) { - return dataSource.createNewEmailRuleFilter(accountId, ruleFilterRequest); - } - - @override - Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest) { - return dataSource.editEmailRuleFilter(accountId, ruleFilterRequest); - } } \ No newline at end of file diff --git a/lib/features/manage_account/data/repository/rule_filter_repository_impl.dart b/lib/features/manage_account/data/repository/rule_filter_repository_impl.dart new file mode 100644 index 000000000..2f90d7fb2 --- /dev/null +++ b/lib/features/manage_account/data/repository/rule_filter_repository_impl.dart @@ -0,0 +1,35 @@ + +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:rule_filter/rule_filter/tmail_rule.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/rule_filter_datasource.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/rule_filter_repository.dart'; + +class RuleFilterRepositoryImpl extends RuleFilterRepository { + + final RuleFilterDataSource dataSource; + + RuleFilterRepositoryImpl(this.dataSource); + + @override + Future> getAllTMailRule(AccountId accountId) { + return dataSource.getAllTMailRule(accountId); + } + + @override + Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest) { + return dataSource.deleteTMailRule(accountId, deleteEmailRuleRequest); + } + + @override + Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest) { + return dataSource.createNewEmailRuleFilter(accountId, ruleFilterRequest); + } + + @override + Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest) { + return dataSource.editEmailRuleFilter(accountId, ruleFilterRequest); + } +} \ No newline at end of file diff --git a/lib/features/manage_account/domain/repository/manage_account_repository.dart b/lib/features/manage_account/domain/repository/manage_account_repository.dart index 72a1869fd..de03d24f4 100644 --- a/lib/features/manage_account/domain/repository/manage_account_repository.dart +++ b/lib/features/manage_account/domain/repository/manage_account_repository.dart @@ -1,19 +1,5 @@ import 'dart:ui'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:rule_filter/rule_filter/tmail_rule.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; - abstract class ManageAccountRepository { Future persistLanguage(Locale localeCurrent); - - Future> getAllTMailRule(AccountId accountId); - - Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest); - - Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest); - - Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest); } \ No newline at end of file diff --git a/lib/features/manage_account/domain/repository/rule_filter_repository.dart b/lib/features/manage_account/domain/repository/rule_filter_repository.dart new file mode 100644 index 000000000..f08284ef1 --- /dev/null +++ b/lib/features/manage_account/domain/repository/rule_filter_repository.dart @@ -0,0 +1,15 @@ +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:rule_filter/rule_filter/tmail_rule.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; + +abstract class RuleFilterRepository { + Future> getAllTMailRule(AccountId accountId); + + Future> deleteTMailRule(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest); + + Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest); + + Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest); +} \ No newline at end of file diff --git a/lib/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart b/lib/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart index 188c503cd..45904d6d9 100644 --- a/lib/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart +++ b/lib/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart @@ -5,20 +5,20 @@ import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/rule_filter_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart'; class CreateNewEmailRuleFilterInteractor { - final ManageAccountRepository manageAccountRepository; + final RuleFilterRepository _ruleFilterRepository; - CreateNewEmailRuleFilterInteractor(this.manageAccountRepository); + CreateNewEmailRuleFilterInteractor(this._ruleFilterRepository); Stream> execute( AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest ) async* { try { - final newListRules = await manageAccountRepository.createNewEmailRuleFilter( + final newListRules = await _ruleFilterRepository.createNewEmailRuleFilter( accountId, ruleFilterRequest); yield Right(CreateNewRuleFilterSuccess(newListRules)); diff --git a/lib/features/manage_account/domain/usecases/delete_email_rule_interactor.dart b/lib/features/manage_account/domain/usecases/delete_email_rule_interactor.dart index 8f33c4011..e10c70098 100644 --- a/lib/features/manage_account/domain/usecases/delete_email_rule_interactor.dart +++ b/lib/features/manage_account/domain/usecases/delete_email_rule_interactor.dart @@ -4,17 +4,17 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/rule_filter_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/delete_email_rule_state.dart'; class DeleteEmailRuleInteractor { - final ManageAccountRepository manageAccountRepository; + final RuleFilterRepository _ruleFilterRepository; - DeleteEmailRuleInteractor(this.manageAccountRepository); + DeleteEmailRuleInteractor(this._ruleFilterRepository); Stream> execute(AccountId accountId, DeleteEmailRuleRequest deleteEmailRuleRequest) async* { try { - final result = await manageAccountRepository.deleteTMailRule(accountId, deleteEmailRuleRequest); + final result = await _ruleFilterRepository.deleteTMailRule(accountId, deleteEmailRuleRequest); yield Right(DeleteEmailRuleSuccess(result)); } catch (exception) { yield Left(DeleteEmailRuleFailure(exception)); diff --git a/lib/features/manage_account/domain/usecases/edit_email_rule_filter_interactor.dart b/lib/features/manage_account/domain/usecases/edit_email_rule_filter_interactor.dart index 3ed63f365..5402b3ce5 100644 --- a/lib/features/manage_account/domain/usecases/edit_email_rule_filter_interactor.dart +++ b/lib/features/manage_account/domain/usecases/edit_email_rule_filter_interactor.dart @@ -5,20 +5,20 @@ import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/rule_filter_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/edit_email_rule_filter_state.dart'; class EditEmailRuleFilterInteractor { - final ManageAccountRepository manageAccountRepository; + final RuleFilterRepository _ruleFilterRepository; - EditEmailRuleFilterInteractor(this.manageAccountRepository); + EditEmailRuleFilterInteractor(this._ruleFilterRepository); Stream> execute( AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest ) async* { try { - final newListRules = await manageAccountRepository + final newListRules = await _ruleFilterRepository .editEmailRuleFilter(accountId, ruleFilterRequest); yield Right(EditEmailRuleFilterSuccess(newListRules)); } catch (exception) { diff --git a/lib/features/manage_account/domain/usecases/get_all_rules_interactor.dart b/lib/features/manage_account/domain/usecases/get_all_rules_interactor.dart index 238d2d382..ec84f8a80 100644 --- a/lib/features/manage_account/domain/usecases/get_all_rules_interactor.dart +++ b/lib/features/manage_account/domain/usecases/get_all_rules_interactor.dart @@ -3,18 +3,18 @@ import 'dart:core'; import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/rule_filter_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_rules_state.dart'; class GetAllRulesInteractor { - final ManageAccountRepository manageAccountRepository; + final RuleFilterRepository _ruleFilterRepository; - GetAllRulesInteractor(this.manageAccountRepository); + GetAllRulesInteractor(this._ruleFilterRepository); Stream> execute(AccountId accountId) async* { try { yield Right(LoadingState()); - final rulesResponse = await manageAccountRepository.getAllTMailRule(accountId); + final rulesResponse = await _ruleFilterRepository.getAllTMailRule(accountId); yield Right(GetAllRulesSuccess(rulesResponse)); } catch (exception) { yield Left(GetAllRulesFailure(exception));