diff --git a/lib/features/manage_account/data/datasource/forwarding_datasource.dart b/lib/features/manage_account/data/datasource/forwarding_datasource.dart new file mode 100644 index 000000000..072fcba32 --- /dev/null +++ b/lib/features/manage_account/data/datasource/forwarding_datasource.dart @@ -0,0 +1,15 @@ +import 'package:forward/forward/tmail_forward.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/add_recipients_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; + +abstract class ForwardingDataSource { + Future getForward(AccountId accountId); + + Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest); + + Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest); + + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest); +} \ No newline at end of file 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 cd3d52952..03efa0894 100644 --- a/lib/features/manage_account/data/datasource/manage_account_datasource.dart +++ b/lib/features/manage_account/data/datasource/manage_account_datasource.dart @@ -1,14 +1,10 @@ import 'dart:ui'; -import 'package:forward/forward/tmail_forward.dart'; 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/add_recipients_in_forwarding_request.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/delete_recipient_in_forwarding_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/model/edit_local_copy_in_forwarding_request.dart'; abstract class ManageAccountDataSource { Future persistLanguage(Locale localeCurrent); @@ -20,12 +16,4 @@ abstract class ManageAccountDataSource { Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest); Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest); - - Future getForward(AccountId accountId); - - Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest); - - Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest); - - Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest); } \ No newline at end of file diff --git a/lib/features/manage_account/data/datasource_impl/forwarding_data_source_impl.dart b/lib/features/manage_account/data/datasource_impl/forwarding_data_source_impl.dart new file mode 100644 index 000000000..57bb7f200 --- /dev/null +++ b/lib/features/manage_account/data/datasource_impl/forwarding_data_source_impl.dart @@ -0,0 +1,52 @@ +import 'package:forward/forward/tmail_forward.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/forwarding_datasource.dart'; +import 'package:tmail_ui_user/features/manage_account/data/network/forwarding_api.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/add_recipients_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; +import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; + +class ForwardingDataSourceImpl extends ForwardingDataSource { + + final ForwardingAPI _forwardingAPI; + final ExceptionThrower _exceptionThrower; + + ForwardingDataSourceImpl(this._forwardingAPI, this._exceptionThrower); + + @override + Future getForward(AccountId accountId) { + return Future.sync(() async { + return await _forwardingAPI.getForward(accountId); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } + + @override + Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest) { + return Future.sync(() async { + return await _forwardingAPI.updateForward(accountId, deleteRequest.newTMailForward); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } + + @override + Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) { + return Future.sync(() async { + return await _forwardingAPI.updateForward(accountId, addRequest.newTMailForward); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } + + @override + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) { + return Future.sync(() async { + return await _forwardingAPI.updateForward(accountId, editRequest.newTMailForward); + }).catchError((error) { + _exceptionThrower.throwException(error); + }); + } +} \ 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 c407eab7c..6c82d6703 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,17 +1,13 @@ import 'dart:ui'; -import 'package:forward/forward/tmail_forward.dart'; 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/add_recipients_in_forwarding_request.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/delete_recipient_in_forwarding_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/model/edit_local_copy_in_forwarding_request.dart'; import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; class ManageAccountDataSourceImpl extends ManageAccountDataSource { @@ -23,7 +19,8 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource { ManageAccountDataSourceImpl( this.manageAccountAPI, this._languageCacheManager, - this._exceptionThrower); + this._exceptionThrower + ); @override Future persistLanguage(Locale localeCurrent) { @@ -72,40 +69,4 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource { _exceptionThrower.throwException(error); }); } - - @override - Future getForward(AccountId accountId) { - return Future.sync(() async { - return await manageAccountAPI.getForward(accountId); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } - - @override - Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest) { - return Future.sync(() async { - return await manageAccountAPI.updateForward(accountId, deleteRequest.newTMailForward); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } - - @override - Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) { - return Future.sync(() async { - return await manageAccountAPI.updateForward(accountId, addRequest.newTMailForward); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } - - @override - Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) { - return Future.sync(() async { - return await manageAccountAPI.updateForward(accountId, editRequest.newTMailForward); - }).catchError((error) { - _exceptionThrower.throwException(error); - }); - } } \ No newline at end of file diff --git a/lib/features/manage_account/data/network/forwarding_api.dart b/lib/features/manage_account/data/network/forwarding_api.dart new file mode 100644 index 000000000..93149d01c --- /dev/null +++ b/lib/features/manage_account/data/network/forwarding_api.dart @@ -0,0 +1,72 @@ +import 'package:forward/forward/forward_id.dart'; +import 'package:forward/forward/get/get_forward_method.dart'; +import 'package:forward/forward/get/get_forward_response.dart'; +import 'package:forward/forward/set/set_forward_method.dart'; +import 'package:forward/forward/tmail_forward.dart'; +import 'package:jmap_dart_client/http/http_client.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/jmap_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/exceptions/forward_exception.dart'; + +class ForwardingAPI { + final HttpClient _httpClient; + + ForwardingAPI(this._httpClient); + + Future getForward(AccountId accountId) async { + final processingInvocation = ProcessingInvocation(); + final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation); + + final getForwardMethod = GetForwardMethod( + accountId, + )..addIds({ForwardIdSingleton.forwardIdSingleton.id}); + + final getForwardInvocation = requestBuilder.invocation(getForwardMethod); + final response = await (requestBuilder + ..usings(getForwardMethod.requiredCapabilities)) + .build() + .execute(); + + final result = response.parse( + getForwardInvocation.methodCallId, + GetForwardResponse.deserialize); + + final tMailForwardResult = result?.list.first; + if (tMailForwardResult == null) { + throw NotFoundForwardException(); + } + + return tMailForwardResult; + } + + Future updateForward(AccountId accountId, TMailForward forward) async { + final setForwardMethod = SetForwardMethod(accountId) + ..addUpdatesSingleton({ + ForwardIdSingleton.forwardIdSingleton.id : forward + }); + + final processingInvocation = ProcessingInvocation(); + final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation) + ..invocation(setForwardMethod); + + final getForwardMethod = GetForwardMethod(accountId) + ..addIds({ForwardIdSingleton.forwardIdSingleton.id}); + final getForwardInvocation = requestBuilder.invocation(getForwardMethod); + + final response = await (requestBuilder + ..usings(setForwardMethod.requiredCapabilities)) + .build() + .execute(); + + final getForwardResponse = response.parse( + getForwardInvocation.methodCallId, + GetForwardResponse.deserialize); + + final newForward = getForwardResponse?.list.first; + if (newForward == null) { + throw NotFoundForwardException(); + } + + return newForward; + } +} \ 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/manage_account_api.dart index 863f3aa05..484b04100 100644 --- a/lib/features/manage_account/data/network/manage_account_api.dart +++ b/lib/features/manage_account/data/network/manage_account_api.dart @@ -1,10 +1,5 @@ import 'dart:async'; -import 'package:forward/forward/forward_id.dart'; -import 'package:forward/forward/get/get_forward_method.dart'; -import 'package:forward/forward/get/get_forward_response.dart'; -import 'package:forward/forward/set/set_forward_method.dart'; -import 'package:forward/forward/tmail_forward.dart'; import 'package:jmap_dart_client/http/http_client.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/id.dart'; @@ -15,7 +10,6 @@ import 'package:rule_filter/rule_filter/rule_filter_id.dart'; 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'; -import 'package:tmail_ui_user/features/manage_account/domain/exceptions/forward_exception.dart'; class ManageAccountAPI { @@ -81,61 +75,4 @@ class ManageAccountAPI { return result?.list.first.rules ?? []; } - - Future getForward(AccountId accountId) async { - final processingInvocation = ProcessingInvocation(); - final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation); - - final getForwardMethod = GetForwardMethod( - accountId, - )..addIds({ForwardIdSingleton.forwardIdSingleton.id}); - - final getForwardInvocation = requestBuilder.invocation(getForwardMethod); - final response = await (requestBuilder - ..usings(getForwardMethod.requiredCapabilities)) - .build() - .execute(); - - final result = response.parse( - getForwardInvocation.methodCallId, - GetForwardResponse.deserialize); - - final tMailForwardResult = result?.list.first; - if (tMailForwardResult == null) { - throw NotFoundForwardException(); - } - - return tMailForwardResult; - } - - Future updateForward(AccountId accountId, TMailForward forward) async { - final setForwardMethod = SetForwardMethod(accountId) - ..addUpdatesSingleton({ - ForwardIdSingleton.forwardIdSingleton.id : forward - }); - - final processingInvocation = ProcessingInvocation(); - final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation) - ..invocation(setForwardMethod); - - final getForwardMethod = GetForwardMethod(accountId) - ..addIds({ForwardIdSingleton.forwardIdSingleton.id}); - final getForwardInvocation = requestBuilder.invocation(getForwardMethod); - - final response = await (requestBuilder - ..usings(setForwardMethod.requiredCapabilities)) - .build() - .execute(); - - final getForwardResponse = response.parse( - getForwardInvocation.methodCallId, - GetForwardResponse.deserialize); - - final newForward = getForwardResponse?.list.first; - if (newForward == null) { - throw NotFoundForwardException(); - } - - return newForward; - } } \ No newline at end of file diff --git a/lib/features/manage_account/data/repository/forwarding_repository_impl.dart b/lib/features/manage_account/data/repository/forwarding_repository_impl.dart new file mode 100644 index 000000000..e72905471 --- /dev/null +++ b/lib/features/manage_account/data/repository/forwarding_repository_impl.dart @@ -0,0 +1,33 @@ +import 'package:forward/forward/tmail_forward.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/forwarding_datasource.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/add_recipients_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/forwarding_repository.dart'; + +class ForwardingRepositoryImpl extends ForwardingRepository { + final ForwardingDataSource dataSource; + + ForwardingRepositoryImpl(this.dataSource); + + @override + Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) { + return dataSource.addRecipientsInForwarding(accountId, addRequest); + } + + @override + Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest) { + return dataSource.deleteRecipientInForwarding(accountId, deleteRequest); + } + + @override + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) { + return dataSource.editLocalCopyInForwarding(accountId, editRequest); + } + + @override + Future getForward(AccountId accountId) { + return dataSource.getForward(accountId); + } +} \ No newline at end of file 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 f717d471e..1902a668b 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,15 +1,11 @@ import 'dart:ui'; -import 'package:forward/forward/tmail_forward.dart'; 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/add_recipients_in_forwarding_request.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/delete_recipient_in_forwarding_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/model/edit_local_copy_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; class ManageAccountRepositoryImpl extends ManageAccountRepository { @@ -42,24 +38,4 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository { Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest) { return dataSource.editEmailRuleFilter(accountId, ruleFilterRequest); } - - @override - Future getForward(AccountId accountId) { - return dataSource.getForward(accountId); - } - - @override - Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest) { - return dataSource.deleteRecipientInForwarding(accountId, deleteRequest); - } - - @override - Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) { - return dataSource.addRecipientsInForwarding(accountId, addRequest); - } - - @override - Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) { - return dataSource.editLocalCopyInForwarding(accountId, editRequest); - } } \ No newline at end of file diff --git a/lib/features/manage_account/domain/repository/forwarding_repository.dart b/lib/features/manage_account/domain/repository/forwarding_repository.dart new file mode 100644 index 000000000..259e82905 --- /dev/null +++ b/lib/features/manage_account/domain/repository/forwarding_repository.dart @@ -0,0 +1,15 @@ +import 'package:forward/forward/tmail_forward.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/add_recipients_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; + +abstract class ForwardingRepository { + Future getForward(AccountId accountId); + + Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest); + + Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest); + + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest); +} \ 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 fade06e3a..72a1869fd 100644 --- a/lib/features/manage_account/domain/repository/manage_account_repository.dart +++ b/lib/features/manage_account/domain/repository/manage_account_repository.dart @@ -1,14 +1,10 @@ import 'dart:ui'; -import 'package:forward/forward/tmail_forward.dart'; 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/add_recipients_in_forwarding_request.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/delete_recipient_in_forwarding_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/model/edit_local_copy_in_forwarding_request.dart'; abstract class ManageAccountRepository { Future persistLanguage(Locale localeCurrent); @@ -20,12 +16,4 @@ abstract class ManageAccountRepository { Future> createNewEmailRuleFilter(AccountId accountId, CreateNewEmailRuleFilterRequest ruleFilterRequest); Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest); - - Future getForward(AccountId accountId); - - Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest); - - Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest); - - Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest); } \ No newline at end of file diff --git a/lib/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart b/lib/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart index 5e904f180..8f3307a2b 100644 --- a/lib/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart +++ b/lib/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart @@ -5,13 +5,13 @@ 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/add_recipients_in_forwarding_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/forwarding_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/add_recipient_in_forwarding_state.dart'; class AddRecipientsInForwardingInteractor { - final ManageAccountRepository manageAccountRepository; + final ForwardingRepository _forwardingRepository; - AddRecipientsInForwardingInteractor(this.manageAccountRepository); + AddRecipientsInForwardingInteractor(this._forwardingRepository); Stream> execute( AccountId accountId, @@ -19,7 +19,7 @@ class AddRecipientsInForwardingInteractor { ) async* { try { yield Right(LoadingState()); - final result = await manageAccountRepository.addRecipientsInForwarding(accountId, addRequest); + final result = await _forwardingRepository.addRecipientsInForwarding(accountId, addRequest); yield Right(AddRecipientsInForwardingSuccess(result)); } catch (exception) { yield Left(AddRecipientsInForwardingFailure(exception)); diff --git a/lib/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart b/lib/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart index 40b52956b..6cf7b1767 100644 --- a/lib/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart +++ b/lib/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart @@ -5,13 +5,13 @@ 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/delete_recipient_in_forwarding_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/forwarding_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/delete_recipient_in_forwarding_state.dart'; class DeleteRecipientInForwardingInteractor { - final ManageAccountRepository manageAccountRepository; + final ForwardingRepository _forwardingRepository; - DeleteRecipientInForwardingInteractor(this.manageAccountRepository); + DeleteRecipientInForwardingInteractor(this._forwardingRepository); Stream> execute( AccountId accountId, @@ -19,7 +19,7 @@ class DeleteRecipientInForwardingInteractor { ) async* { try { yield Right(StartDeleteRecipientInForwarding()); - final result = await manageAccountRepository.deleteRecipientInForwarding( + final result = await _forwardingRepository.deleteRecipientInForwarding( accountId, deleteRequest); yield Right(DeleteRecipientInForwardingSuccess(result)); diff --git a/lib/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart b/lib/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart index 3b72ec9ff..0bfd3411c 100644 --- a/lib/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart +++ b/lib/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart @@ -5,22 +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_local_copy_in_forwarding_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/forwarding_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart'; class EditLocalCopyInForwardingInteractor { - final ManageAccountRepository manageAccountRepository; + final ForwardingRepository _forwardingRepository; - EditLocalCopyInForwardingInteractor(this.manageAccountRepository); + EditLocalCopyInForwardingInteractor(this._forwardingRepository); Stream> execute( AccountId accountId, EditLocalCopyInForwardingRequest editRequest, ) async* { try { - final result = await manageAccountRepository.editLocalCopyInForwarding( - accountId, - editRequest); + final result = await _forwardingRepository.editLocalCopyInForwarding(accountId, editRequest); yield Right(EditLocalCopyInForwardingSuccess(result)); } catch (exception) { yield Left(EditLocalCopyInForwardingFailure(exception)); diff --git a/lib/features/manage_account/domain/usecases/get_forward_interactor.dart b/lib/features/manage_account/domain/usecases/get_forward_interactor.dart index bb72e9b52..bd8235828 100644 --- a/lib/features/manage_account/domain/usecases/get_forward_interactor.dart +++ b/lib/features/manage_account/domain/usecases/get_forward_interactor.dart @@ -1,20 +1,21 @@ import 'dart:core'; -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: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/forwarding_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/get_forward_state.dart'; class GetForwardInteractor { - final ManageAccountRepository manageAccountRepository; + final ForwardingRepository _forwardingRepository; - GetForwardInteractor(this.manageAccountRepository); + GetForwardInteractor(this._forwardingRepository); Stream> execute(AccountId accountId) async* { try { yield Right(LoadingState()); - final response = await manageAccountRepository.getForward(accountId); + final response = await _forwardingRepository.getForward(accountId); yield Right(GetForwardSuccess(response)); } catch (exception) { yield Left(GetForwardFailure(exception)); diff --git a/lib/features/manage_account/presentation/forward/forward_bindings.dart b/lib/features/manage_account/presentation/forward/bindings/forward_bindings.dart similarity index 50% rename from lib/features/manage_account/presentation/forward/forward_bindings.dart rename to lib/features/manage_account/presentation/forward/bindings/forward_bindings.dart index 2e5bb8372..b683a4dd5 100644 --- a/lib/features/manage_account/presentation/forward/forward_bindings.dart +++ b/lib/features/manage_account/presentation/forward/bindings/forward_bindings.dart @@ -1,16 +1,16 @@ import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/base_bindings.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_forward_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart'; -class ForwardBindings extends BaseBindings { +class ForwardBindings extends Bindings { @override - void bindingsController() { + void dependencies() { + ForwardingInteractorsBindings().dependencies(); Get.lazyPut(() => ForwardController( Get.find(), Get.find(), @@ -18,24 +18,4 @@ class ForwardBindings extends BaseBindings { Get.find(), )); } - - @override - void bindingsDataSource() {} - - @override - void bindingsDataSourceImpl() {} - - @override - void bindingsInteractor() { - Get.lazyPut(() => GetForwardInteractor(Get.find())); - Get.lazyPut(() => DeleteRecipientInForwardingInteractor(Get.find())); - Get.lazyPut(() => AddRecipientsInForwardingInteractor(Get.find())); - Get.lazyPut(() => EditLocalCopyInForwardingInteractor(Get.find())); - } - - @override - void bindingsRepository() {} - - @override - void bindingsRepositoryImpl() {} } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart b/lib/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart new file mode 100644 index 000000000..1629ddeee --- /dev/null +++ b/lib/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart @@ -0,0 +1,46 @@ +import 'package:get/get_core/src/get_main.dart'; +import 'package:get/get_instance/get_instance.dart'; +import 'package:tmail_ui_user/features/base/interactors_bindings.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/forwarding_datasource.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/forwarding_data_source_impl.dart'; +import 'package:tmail_ui_user/features/manage_account/data/network/forwarding_api.dart'; +import 'package:tmail_ui_user/features/manage_account/data/repository/forwarding_repository_impl.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/forwarding_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_forward_interactor.dart'; +import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart'; + +class ForwardingInteractorsBindings extends InteractorsBindings { + + @override + void bindingsDataSource() { + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsDataSourceImpl() { + Get.lazyPut(() => ForwardingDataSourceImpl( + Get.find(), + Get.find())); + } + + @override + void bindingsInteractor() { + Get.lazyPut(() => GetForwardInteractor(Get.find())); + Get.lazyPut(() => DeleteRecipientInForwardingInteractor(Get.find())); + Get.lazyPut(() => AddRecipientsInForwardingInteractor(Get.find())); + Get.lazyPut(() => EditLocalCopyInForwardingInteractor(Get.find())); + } + + @override + void bindingsRepository() { + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsRepositoryImpl() { + Get.lazyPut(() => ForwardingRepositoryImpl(Get.find())); + } +} \ No newline at end of file diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index f9f1460e2..6eaf8be1c 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -22,7 +22,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oi import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_bindings.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forward_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart'; diff --git a/lib/features/manage_account/presentation/vacation/vacation_interactors_bindings.dart b/lib/features/manage_account/presentation/vacation/vacation_interactors_bindings.dart index 9aa20b242..890d4cff2 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_interactors_bindings.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_interactors_bindings.dart @@ -1,6 +1,6 @@ import 'package:get/get_core/src/get_main.dart'; import 'package:get/get_instance/get_instance.dart'; -import 'package:tmail_ui_user/features/base/base_bindings.dart'; +import 'package:tmail_ui_user/features/base/interactors_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/data/datasource/vacation_data_source.dart'; import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/vacation_data_source_impl.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/vacation_api.dart'; @@ -10,10 +10,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_va import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart'; import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart'; -class VacationInteractorsBindings extends BaseBindings { - @override - void bindingsController() { - } +class VacationInteractorsBindings extends InteractorsBindings { @override void bindingsDataSource() { diff --git a/lib/main/bindings/network/network_bindings.dart b/lib/main/bindings/network/network_bindings.dart index 3f727a8a8..5ded2e74b 100644 --- a/lib/main/bindings/network/network_bindings.dart +++ b/lib/main/bindings/network/network_bindings.dart @@ -17,6 +17,7 @@ import 'package:tmail_ui_user/features/login/data/network/config/authorization_i import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart'; import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart'; import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart'; +import 'package:tmail_ui_user/features/manage_account/data/network/forwarding_api.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/identity_api.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/manage_account_api.dart'; import 'package:tmail_ui_user/features/manage_account/data/network/vacation_api.dart'; @@ -84,6 +85,7 @@ class NetworkBindings extends Bindings { Get.put(ContactAPI(Get.find())); Get.put(IdentityAPI(Get.find())); Get.put(MdnAPI(Get.find())); + Get.put(ForwardingAPI(Get.find())); } void _bindingConnection() {