From 398654a79d22a6a6b29690194fa509026e0fbcca Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 19 Oct 2022 17:53:34 +0700 Subject: [PATCH] TF-657 Separate `interactor/repository/datasource` of identity --- lib/features/base/interactors_bindings.dart | 24 ++++ .../presentation/composer_bindings.dart | 16 +-- .../identity_creator_bindings.dart | 47 ++------ .../data/datasource/identity_data_source.dart | 16 +++ .../datasource/manage_account_datasource.dart | 14 --- .../identity_data_source_impl.dart | 52 +++++++++ .../manage_account_datasource_impl.dart | 45 +------- .../data/network/identity_api.dart | 101 +++++++++++++++++ .../data/network/manage_account_api.dart | 105 ------------------ .../repository/identity_repository_impl.dart | 36 ++++++ .../manage_account_repository_impl.dart | 25 ----- .../repository/identity_repository.dart | 16 +++ .../repository/manage_account_repository.dart | 13 --- .../state/create_new_identity_state.dart | 2 + .../domain/state/delete_identity_state.dart | 2 + .../domain/state/edit_identity_state.dart | 2 + .../state/get_all_identities_state.dart | 2 + .../create_new_identity_interactor.dart | 9 +- .../usecases/delete_identity_interactor.dart | 9 +- .../usecases/edit_identity_interactor.dart | 9 +- .../get_all_identities_interactor.dart | 10 +- .../identities/identities_bindings.dart | 41 ------- .../identities/identity_bindings.dart | 22 ++++ .../identity_interactors_bindings.dart | 42 +++++++ .../profiles/profiles_bindings.dart | 4 +- .../bindings/network/network_bindings.dart | 2 + 26 files changed, 353 insertions(+), 313 deletions(-) create mode 100644 lib/features/base/interactors_bindings.dart create mode 100644 lib/features/manage_account/data/datasource/identity_data_source.dart create mode 100644 lib/features/manage_account/data/datasource_impl/identity_data_source_impl.dart create mode 100644 lib/features/manage_account/data/network/identity_api.dart create mode 100644 lib/features/manage_account/data/repository/identity_repository_impl.dart create mode 100644 lib/features/manage_account/domain/repository/identity_repository.dart delete mode 100644 lib/features/manage_account/presentation/profiles/identities/identities_bindings.dart create mode 100644 lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart create mode 100644 lib/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart diff --git a/lib/features/base/interactors_bindings.dart b/lib/features/base/interactors_bindings.dart new file mode 100644 index 000000000..8b376c325 --- /dev/null +++ b/lib/features/base/interactors_bindings.dart @@ -0,0 +1,24 @@ + +import 'package:get/get_instance/src/bindings_interface.dart'; + +abstract class InteractorsBindings extends Bindings { + + @override + void dependencies() { + bindingsDataSourceImpl(); + bindingsDataSource(); + bindingsRepositoryImpl(); + bindingsRepository(); + bindingsInteractor(); + } + + void bindingsDataSourceImpl(); + + void bindingsDataSource(); + + void bindingsRepositoryImpl(); + + void bindingsRepository(); + + void bindingsInteractor(); +} \ No newline at end of file diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index e688e4e58..86421b9a0 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -41,13 +41,8 @@ import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_reposit import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_composer_cache_on_web_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart'; -import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manage_account_datasource_impl.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/data/repository/manage_account_repository_impl.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/get_all_identities_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart'; import 'package:tmail_ui_user/features/upload/data/datasource/attachment_upload_datasource.dart'; import 'package:tmail_ui_user/features/upload/data/datasource_impl/attachment_upload_datasource_impl.dart'; import 'package:tmail_ui_user/features/upload/data/network/file_uploader.dart'; @@ -82,9 +77,6 @@ class ComposerBindings extends BaseBindings { Get.find() )); Get.lazyPut(() => StateDataSourceImpl(Get.find())); - Get.lazyPut(() => ManageAccountDataSourceImpl( - Get.find(), - Get.find())); } @override @@ -96,7 +88,6 @@ class ComposerBindings extends BaseBindings { Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); } @override @@ -117,7 +108,6 @@ class ComposerBindings extends BaseBindings { Get.find(), Get.find(), )); - Get.lazyPut(() => ManageAccountRepositoryImpl(Get.find())); } @override @@ -126,7 +116,6 @@ class ComposerBindings extends BaseBindings { Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); } @override @@ -144,10 +133,11 @@ class ComposerBindings extends BaseBindings { Get.lazyPut(() => UpdateEmailDraftsInteractor( Get.find(), Get.find())); - Get.lazyPut(() => GetAllIdentitiesInteractor(Get.find())); Get.lazyPut(() => RemoveComposerCacheOnWebInteractor(Get.find())); Get.lazyPut(() => SaveComposerCacheOnWebInteractor(Get.find())); Get.lazyPut(() => DownloadImageAsBase64Interactor(Get.find())); + + IdentityInteractorsBindings().dependencies(); } @override diff --git a/lib/features/identity_creator/presentation/identity_creator_bindings.dart b/lib/features/identity_creator/presentation/identity_creator_bindings.dart index 4a79bfd03..c13ff3ce9 100644 --- a/lib/features/identity_creator/presentation/identity_creator_bindings.dart +++ b/lib/features/identity_creator/presentation/identity_creator_bindings.dart @@ -1,50 +1,19 @@ import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_controller.dart'; import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart'; -import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manage_account_datasource_impl.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/data/repository/manage_account_repository_impl.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/get_all_identities_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart'; -class IdentityCreatorBindings extends BaseBindings { +class IdentityCreatorBindings extends Bindings { @override - void bindingsController() { + void dependencies() { + IdentityInteractorsBindings().dependencies(); + Get.lazyPut(() => VerifyNameInteractor()); + Get.lazyPut(() => IdentityCreatorController( - Get.find(), - Get.find(), + Get.find(), + Get.find(), )); } - - @override - void bindingsDataSource() { - Get.lazyPut(() => Get.find()); - } - - @override - void bindingsDataSourceImpl() { - Get.lazyPut(() => ManageAccountDataSourceImpl( - Get.find(), - Get.find())); - } - - @override - void bindingsInteractor() { - Get.lazyPut(() => VerifyNameInteractor()); - Get.lazyPut(() => GetAllIdentitiesInteractor(Get.find())); - } - - @override - void bindingsRepository() { - Get.lazyPut(() => Get.find()); - } - - @override - void bindingsRepositoryImpl() { - Get.lazyPut(() => ManageAccountRepositoryImpl(Get.find())); - } } \ No newline at end of file diff --git a/lib/features/manage_account/data/datasource/identity_data_source.dart b/lib/features/manage_account/data/datasource/identity_data_source.dart new file mode 100644 index 000000000..0160fd21d --- /dev/null +++ b/lib/features/manage_account/data/datasource/identity_data_source.dart @@ -0,0 +1,16 @@ +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; +import 'package:jmap_dart_client/jmap/identities/identity.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; + +abstract class IdentityDataSource { + Future getAllIdentities(AccountId accountId, {Properties? properties}); + + Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest); + + Future deleteIdentity(AccountId accountId, IdentityId identityId); + + Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest); +} \ 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 3d3a75fb2..cd3d52952 100644 --- a/lib/features/manage_account/data/datasource/manage_account_datasource.dart +++ b/lib/features/manage_account/data/datasource/manage_account_datasource.dart @@ -2,28 +2,15 @@ import 'dart:ui'; import 'package:forward/forward/tmail_forward.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; -import 'package:jmap_dart_client/jmap/identities/identity.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/create_new_identity_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_identity_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/model/identities_response.dart'; abstract class ManageAccountDataSource { - Future getAllIdentities(AccountId accountId, {Properties? properties}); - - Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest); - - Future deleteIdentity(AccountId accountId, IdentityId identityId); - - Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest); - Future persistLanguage(Locale localeCurrent); Future> getAllTMailRule(AccountId accountId); @@ -41,5 +28,4 @@ abstract class ManageAccountDataSource { 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/identity_data_source_impl.dart b/lib/features/manage_account/data/datasource_impl/identity_data_source_impl.dart new file mode 100644 index 000000000..bbce62f49 --- /dev/null +++ b/lib/features/manage_account/data/datasource_impl/identity_data_source_impl.dart @@ -0,0 +1,52 @@ +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; +import 'package:jmap_dart_client/jmap/identities/identity.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/identity_data_source.dart'; +import 'package:tmail_ui_user/features/manage_account/data/network/identity_api.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; + +class IdentityDataSourceImpl extends IdentityDataSource { + + final IdentityAPI _identityAPI; + + IdentityDataSourceImpl(this._identityAPI); + + @override + Future getAllIdentities(AccountId accountId, + {Properties? properties}) { + return Future.sync(() async { + return await _identityAPI.getAllIdentities(accountId, properties: properties); + }).catchError((error) { + throw error; + }); + } + + @override + Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest) { + return Future.sync(() async { + return await _identityAPI.createNewIdentity(accountId, identityRequest); + }).catchError((error) { + throw error; + }); + } + + @override + Future deleteIdentity(AccountId accountId, IdentityId identityId) { + return Future.sync(() async { + return await _identityAPI.deleteIdentity(accountId, identityId); + }).catchError((error) { + throw error; + }); + } + + @override + Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest) { + return Future.sync(() async { + return await _identityAPI.editIdentity(accountId, editIdentityRequest); + }).catchError((error) { + throw 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 007d03a1b..1ef7c3c58 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 @@ -2,66 +2,23 @@ import 'dart:ui'; import 'package:forward/forward/tmail_forward.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; -import 'package:jmap_dart_client/jmap/identities/identity.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/create_new_identity_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_identity_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/model/identities_response.dart'; class ManageAccountDataSourceImpl extends ManageAccountDataSource { final ManageAccountAPI manageAccountAPI; final LanguageCacheManager _languageCacheManager; - ManageAccountDataSourceImpl( - this.manageAccountAPI, this._languageCacheManager); - - @override - Future getAllIdentities(AccountId accountId, - {Properties? properties}) { - return Future.sync(() async { - return await manageAccountAPI.getAllIdentities(accountId, properties: properties); - }).catchError((error) { - throw error; - }); - } - - @override - Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest) { - return Future.sync(() async { - return await manageAccountAPI.createNewIdentity(accountId, identityRequest); - }).catchError((error) { - throw error; - }); - } - - @override - Future deleteIdentity(AccountId accountId, IdentityId identityId) { - return Future.sync(() async { - return await manageAccountAPI.deleteIdentity(accountId, identityId); - }).catchError((error) { - throw error; - }); - } - - @override - Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest) { - return Future.sync(() async { - return await manageAccountAPI.editIdentity(accountId, editIdentityRequest); - }).catchError((error) { - throw error; - }); - } + ManageAccountDataSourceImpl(this.manageAccountAPI, this._languageCacheManager); @override Future persistLanguage(Locale localeCurrent) { diff --git a/lib/features/manage_account/data/network/identity_api.dart b/lib/features/manage_account/data/network/identity_api.dart new file mode 100644 index 000000000..10fde3bdb --- /dev/null +++ b/lib/features/manage_account/data/network/identity_api.dart @@ -0,0 +1,101 @@ +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/patch_object.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; +import 'package:jmap_dart_client/jmap/identities/get/get_identity_method.dart'; +import 'package:jmap_dart_client/jmap/identities/get/get_identity_response.dart'; +import 'package:jmap_dart_client/jmap/identities/identity.dart'; +import 'package:jmap_dart_client/jmap/identities/set/set_identity_method.dart'; +import 'package:jmap_dart_client/jmap/identities/set/set_identity_response.dart'; +import 'package:jmap_dart_client/jmap/jmap_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; + +class IdentityAPI { + final HttpClient _httpClient; + + IdentityAPI(this._httpClient); + + Future getAllIdentities(AccountId accountId, {Properties? properties}) async { + final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); + final getIdentityMethod = GetIdentityMethod(accountId); + if (properties != null) { + getIdentityMethod.addProperties(properties); + } + final queryInvocation = requestBuilder.invocation(getIdentityMethod); + + final result = await (requestBuilder + ..usings(getIdentityMethod.requiredCapabilities)) + .build() + .execute(); + + final response = result.parse( + queryInvocation.methodCallId, + GetIdentityResponse.deserialize); + + return IdentitiesResponse(identities: response?.list, state: response?.state); + } + + Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest) async { + final setIdentityMethod = SetIdentityMethod(accountId) + ..addCreate(identityRequest.creationId, identityRequest.newIdentity); + + final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); + + final setIdentityInvocation = requestBuilder.invocation(setIdentityMethod); + + final response = await (requestBuilder + ..usings(setIdentityMethod.requiredCapabilities)) + .build() + .execute(); + + final setIdentityResponse = response.parse( + setIdentityInvocation.methodCallId, + SetIdentityResponse.deserialize); + + return setIdentityResponse!.created![identityRequest.creationId]!; + } + + Future deleteIdentity(AccountId accountId, IdentityId identityId) async { + final setIdentityMethod = SetIdentityMethod(accountId) + ..addDestroy({identityId.id}); + + final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); + + final setIdentityInvocation = requestBuilder.invocation(setIdentityMethod); + + final response = await (requestBuilder + ..usings(setIdentityMethod.requiredCapabilities)) + .build() + .execute(); + + final setIdentityResponse = response.parse( + setIdentityInvocation.methodCallId, + SetIdentityResponse.deserialize); + + return setIdentityResponse?.destroyed?.contains(identityId.id) == true; + } + + Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest) async { + final setIdentityMethod = SetIdentityMethod(accountId) + ..addUpdates({ + editIdentityRequest.identityId.id : PatchObject(editIdentityRequest.identityRequest.toJson()) + }); + + final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); + + final setIdentityInvocation = requestBuilder.invocation(setIdentityMethod); + + final response = await (requestBuilder + ..usings(setIdentityMethod.requiredCapabilities)) + .build() + .execute(); + + final setIdentityResponse = response.parse( + setIdentityInvocation.methodCallId, + SetIdentityResponse.deserialize); + + return setIdentityResponse?.updated?.containsKey(editIdentityRequest.identityId.id) == true; + } +} \ 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 531387944..863f3aa05 100644 --- a/lib/features/manage_account/data/network/manage_account_api.dart +++ b/lib/features/manage_account/data/network/manage_account_api.dart @@ -8,13 +8,6 @@ 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'; -import 'package:jmap_dart_client/jmap/core/patch_object.dart'; -import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; -import 'package:jmap_dart_client/jmap/identities/get/get_identity_method.dart'; -import 'package:jmap_dart_client/jmap/identities/get/get_identity_response.dart'; -import 'package:jmap_dart_client/jmap/identities/identity.dart'; -import 'package:jmap_dart_client/jmap/identities/set/set_identity_method.dart'; -import 'package:jmap_dart_client/jmap/identities/set/set_identity_response.dart'; import 'package:jmap_dart_client/jmap/jmap_request.dart'; import 'package:rule_filter/rule_filter/get/get_rule_filter_method.dart'; import 'package:rule_filter/rule_filter/get/get_rule_filter_response.dart'; @@ -23,9 +16,6 @@ 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'; -import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; class ManageAccountAPI { @@ -33,101 +23,6 @@ class ManageAccountAPI { ManageAccountAPI(this._httpClient); - Future getAllIdentities(AccountId accountId, {Properties? properties}) async { - final processingInvocation = ProcessingInvocation(); - final jmapRequestBuilder = JmapRequestBuilder(_httpClient, processingInvocation); - final getIdentityMethod = GetIdentityMethod(accountId); - if (properties != null) { - getIdentityMethod.addProperties(properties); - } - final queryInvocation = jmapRequestBuilder.invocation(getIdentityMethod); - - final result = await (jmapRequestBuilder - ..usings(getIdentityMethod.requiredCapabilities)) - .build() - .execute(); - - final response = result.parse( - queryInvocation.methodCallId, - GetIdentityResponse.deserialize); - - return IdentitiesResponse(identities: response?.list, state: response?.state); - } - - Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest) async { - final setIdentityMethod = SetIdentityMethod(accountId) - ..addCreate(identityRequest.creationId, identityRequest.newIdentity); - - final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); - - final setIdentityInvocation = requestBuilder.invocation(setIdentityMethod); - - final response = await (requestBuilder - ..usings(setIdentityMethod.requiredCapabilities)) - .build() - .execute(); - - final setIdentityResponse = response.parse( - setIdentityInvocation.methodCallId, - SetIdentityResponse.deserialize); - - return Future.sync(() async { - return setIdentityResponse!.created![identityRequest.creationId]!; - }).catchError((error) { - throw error; - }); - } - - Future deleteIdentity(AccountId accountId, IdentityId identityId) async { - final setIdentityMethod = SetIdentityMethod(accountId) - ..addDestroy({identityId.id}); - - final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); - - final setIdentityInvocation = requestBuilder.invocation(setIdentityMethod); - - final response = await (requestBuilder - ..usings(setIdentityMethod.requiredCapabilities)) - .build() - .execute(); - - final setIdentityResponse = response.parse( - setIdentityInvocation.methodCallId, - SetIdentityResponse.deserialize); - - return Future.sync(() async { - return setIdentityResponse?.destroyed?.contains(identityId.id) == true; - }).catchError((error) { - throw error; - }); - } - - Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest) async { - final setIdentityMethod = SetIdentityMethod(accountId) - ..addUpdates({ - editIdentityRequest.identityId.id : PatchObject(editIdentityRequest.identityRequest.toJson()) - }); - - final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); - - final setIdentityInvocation = requestBuilder.invocation(setIdentityMethod); - - final response = await (requestBuilder - ..usings(setIdentityMethod.requiredCapabilities)) - .build() - .execute(); - - final setIdentityResponse = response.parse( - setIdentityInvocation.methodCallId, - SetIdentityResponse.deserialize); - - return Future.sync(() async { - return setIdentityResponse?.updated?.containsKey(editIdentityRequest.identityId.id) == true; - }).catchError((error) { - throw error; - }); - } - Future> getListTMailRule(AccountId accountId) async { final processingInvocation = ProcessingInvocation(); final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation); diff --git a/lib/features/manage_account/data/repository/identity_repository_impl.dart b/lib/features/manage_account/data/repository/identity_repository_impl.dart new file mode 100644 index 000000000..427736846 --- /dev/null +++ b/lib/features/manage_account/data/repository/identity_repository_impl.dart @@ -0,0 +1,36 @@ + +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; +import 'package:jmap_dart_client/jmap/identities/identity.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/identity_data_source.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/identity_repository.dart'; + +class IdentityRepositoryImpl extends IdentityRepository { + + final IdentityDataSource _dataSource; + + IdentityRepositoryImpl(this._dataSource); + + @override + Future getAllIdentities(AccountId accountId, {Properties? properties}) { + return _dataSource.getAllIdentities(accountId, properties: properties); + } + + @override + Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest) { + return _dataSource.createNewIdentity(accountId, identityRequest); + } + + @override + Future deleteIdentity(AccountId accountId, IdentityId identityId) { + return _dataSource.deleteIdentity(accountId, identityId); + } + + @override + Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest) { + return _dataSource.editIdentity(accountId, editIdentityRequest); + } +} \ 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 7f6d7189c..f717d471e 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 @@ -2,19 +2,14 @@ import 'dart:ui'; import 'package:forward/forward/tmail_forward.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; -import 'package:jmap_dart_client/jmap/identities/identity.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/create_new_identity_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_identity_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/model/identities_response.dart'; import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; class ManageAccountRepositoryImpl extends ManageAccountRepository { @@ -23,26 +18,6 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository { ManageAccountRepositoryImpl(this.dataSource); - @override - Future getAllIdentities(AccountId accountId, {Properties? properties}) { - return dataSource.getAllIdentities(accountId, properties: properties); - } - - @override - Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest) { - return dataSource.createNewIdentity(accountId, identityRequest); - } - - @override - Future deleteIdentity(AccountId accountId, IdentityId identityId) { - return dataSource.deleteIdentity(accountId, identityId); - } - - @override - Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest) { - return dataSource.editIdentity(accountId, editIdentityRequest); - } - @override Future persistLanguage(Locale localeCurrent) { return dataSource.persistLanguage(localeCurrent); diff --git a/lib/features/manage_account/domain/repository/identity_repository.dart b/lib/features/manage_account/domain/repository/identity_repository.dart new file mode 100644 index 000000000..a424d46d6 --- /dev/null +++ b/lib/features/manage_account/domain/repository/identity_repository.dart @@ -0,0 +1,16 @@ +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; +import 'package:jmap_dart_client/jmap/identities/identity.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; + +abstract class IdentityRepository { + Future getAllIdentities(AccountId accountId, {Properties? properties}); + + Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest); + + Future deleteIdentity(AccountId accountId, IdentityId identityId); + + Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest); +} \ 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 ac978bb5a..fade06e3a 100644 --- a/lib/features/manage_account/domain/repository/manage_account_repository.dart +++ b/lib/features/manage_account/domain/repository/manage_account_repository.dart @@ -2,28 +2,15 @@ import 'dart:ui'; import 'package:forward/forward/tmail_forward.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; -import 'package:jmap_dart_client/jmap/identities/identity.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/create_new_identity_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_identity_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/model/identities_response.dart'; abstract class ManageAccountRepository { - Future getAllIdentities(AccountId accountId, {Properties? properties}); - - Future createNewIdentity(AccountId accountId, CreateNewIdentityRequest identityRequest); - - Future deleteIdentity(AccountId accountId, IdentityId identityId); - - Future editIdentity(AccountId accountId, EditIdentityRequest editIdentityRequest); - Future persistLanguage(Locale localeCurrent); Future> getAllTMailRule(AccountId accountId); diff --git a/lib/features/manage_account/domain/state/create_new_identity_state.dart b/lib/features/manage_account/domain/state/create_new_identity_state.dart index f1761d5c3..ce8794f17 100644 --- a/lib/features/manage_account/domain/state/create_new_identity_state.dart +++ b/lib/features/manage_account/domain/state/create_new_identity_state.dart @@ -1,6 +1,8 @@ import 'package:core/core.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; +class CreateNewIdentityLoading extends UIState {} + class CreateNewIdentitySuccess extends UIState { final Identity newIdentity; diff --git a/lib/features/manage_account/domain/state/delete_identity_state.dart b/lib/features/manage_account/domain/state/delete_identity_state.dart index 7d973c5bf..e5a098fa5 100644 --- a/lib/features/manage_account/domain/state/delete_identity_state.dart +++ b/lib/features/manage_account/domain/state/delete_identity_state.dart @@ -1,5 +1,7 @@ import 'package:core/core.dart'; +class DeleteIdentityLoading extends UIState {} + class DeleteIdentitySuccess extends UIState { DeleteIdentitySuccess(); diff --git a/lib/features/manage_account/domain/state/edit_identity_state.dart b/lib/features/manage_account/domain/state/edit_identity_state.dart index 7c3827b30..1be2e1055 100644 --- a/lib/features/manage_account/domain/state/edit_identity_state.dart +++ b/lib/features/manage_account/domain/state/edit_identity_state.dart @@ -1,5 +1,7 @@ import 'package:core/core.dart'; +class EditIdentityLoading extends UIState {} + class EditIdentitySuccess extends UIState { EditIdentitySuccess(); diff --git a/lib/features/manage_account/domain/state/get_all_identities_state.dart b/lib/features/manage_account/domain/state/get_all_identities_state.dart index 8852e3400..b89aac207 100644 --- a/lib/features/manage_account/domain/state/get_all_identities_state.dart +++ b/lib/features/manage_account/domain/state/get_all_identities_state.dart @@ -2,6 +2,8 @@ import 'package:core/core.dart'; import 'package:jmap_dart_client/jmap/core/state.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; +class GetAllIdentitiesLoading extends UIState {} + class GetAllIdentitiesSuccess extends UIState { final List? identities; final State? state; diff --git a/lib/features/manage_account/domain/usecases/create_new_identity_interactor.dart b/lib/features/manage_account/domain/usecases/create_new_identity_interactor.dart index c25a62c20..68c3569cc 100644 --- a/lib/features/manage_account/domain/usecases/create_new_identity_interactor.dart +++ b/lib/features/manage_account/domain/usecases/create_new_identity_interactor.dart @@ -4,17 +4,18 @@ 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/create_new_identity_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/identity_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_identity_state.dart'; class CreateNewIdentityInteractor { - final ManageAccountRepository manageAccountRepository; + final IdentityRepository _identityRepository; - CreateNewIdentityInteractor(this.manageAccountRepository); + CreateNewIdentityInteractor(this._identityRepository); Stream> execute(AccountId accountId, CreateNewIdentityRequest identityRequest) async* { try { - final newIdentity = await manageAccountRepository.createNewIdentity(accountId, identityRequest); + yield Right(CreateNewIdentityLoading()); + final newIdentity = await _identityRepository.createNewIdentity(accountId, identityRequest); yield Right(CreateNewIdentitySuccess(newIdentity)); } catch (exception) { yield Left(CreateNewIdentityFailure(exception)); diff --git a/lib/features/manage_account/domain/usecases/delete_identity_interactor.dart b/lib/features/manage_account/domain/usecases/delete_identity_interactor.dart index 820cc5d24..1d5ff9f6a 100644 --- a/lib/features/manage_account/domain/usecases/delete_identity_interactor.dart +++ b/lib/features/manage_account/domain/usecases/delete_identity_interactor.dart @@ -4,17 +4,18 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/identities/identity.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/identity_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/delete_identity_state.dart'; class DeleteIdentityInteractor { - final ManageAccountRepository manageAccountRepository; + final IdentityRepository _identityRepository; - DeleteIdentityInteractor(this.manageAccountRepository); + DeleteIdentityInteractor(this._identityRepository); Stream> execute(AccountId accountId, IdentityId identityId) async* { try { - final result = await manageAccountRepository.deleteIdentity(accountId, identityId); + yield Right(DeleteIdentityLoading()); + final result = await _identityRepository.deleteIdentity(accountId, identityId); yield result ? Right(DeleteIdentitySuccess()) : Left(DeleteIdentityFailure(null)); } catch (exception) { yield Left(DeleteIdentityFailure(exception)); diff --git a/lib/features/manage_account/domain/usecases/edit_identity_interactor.dart b/lib/features/manage_account/domain/usecases/edit_identity_interactor.dart index 9521c8777..ebf4333e4 100644 --- a/lib/features/manage_account/domain/usecases/edit_identity_interactor.dart +++ b/lib/features/manage_account/domain/usecases/edit_identity_interactor.dart @@ -4,20 +4,21 @@ 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/edit_identity_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/identity_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/edit_identity_state.dart'; class EditIdentityInteractor { - final ManageAccountRepository manageAccountRepository; + final IdentityRepository _identityRepository; - EditIdentityInteractor(this.manageAccountRepository); + EditIdentityInteractor(this._identityRepository); Stream> execute( AccountId accountId, EditIdentityRequest editIdentityRequest ) async* { try { - final result = await manageAccountRepository.editIdentity(accountId, editIdentityRequest); + yield Right(EditIdentityLoading()); + final result = await _identityRepository.editIdentity(accountId, editIdentityRequest); yield result ? Right(EditIdentitySuccess()) : Left(EditIdentityFailure(null)); } catch (exception) { yield Left(EditIdentityFailure(exception)); diff --git a/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart b/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart index 320dd5054..4bf3a202b 100644 --- a/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart +++ b/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart @@ -4,18 +4,18 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.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/identity_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart'; class GetAllIdentitiesInteractor { - final ManageAccountRepository manageAccountRepository; + final IdentityRepository _identityRepository; - GetAllIdentitiesInteractor(this.manageAccountRepository); + GetAllIdentitiesInteractor(this._identityRepository); Stream> execute(AccountId accountId, {Properties? properties}) async* { try { - yield Right(LoadingState()); - final identitiesResponse = await manageAccountRepository.getAllIdentities(accountId, properties: properties); + yield Right(GetAllIdentitiesLoading()); + final identitiesResponse = await _identityRepository.getAllIdentities(accountId, properties: properties); yield Right(GetAllIdentitiesSuccess(identitiesResponse.identities, identitiesResponse.state)); } catch (exception) { yield Left(GetAllIdentitiesFailure(exception)); diff --git a/lib/features/manage_account/presentation/profiles/identities/identities_bindings.dart b/lib/features/manage_account/presentation/profiles/identities/identities_bindings.dart deleted file mode 100644 index 9cdde5775..000000000 --- a/lib/features/manage_account/presentation/profiles/identities/identities_bindings.dart +++ /dev/null @@ -1,41 +0,0 @@ -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/create_new_identity_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_identity_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_identity_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identities_controller.dart'; - -class IdentitiesBindings extends BaseBindings { - - @override - void bindingsController() { - Get.lazyPut(() => IdentitiesController( - Get.find(), - Get.find(), - Get.find(), - Get.find(), - )); - } - - @override - void bindingsDataSource() {} - - @override - void bindingsDataSourceImpl() {} - - @override - void bindingsInteractor() { - Get.lazyPut(() => GetAllIdentitiesInteractor(Get.find())); - Get.lazyPut(() => CreateNewIdentityInteractor(Get.find())); - Get.lazyPut(() => DeleteIdentityInteractor(Get.find())); - Get.lazyPut(() => EditIdentityInteractor(Get.find())); - } - - @override - void bindingsRepository() {} - - @override - void bindingsRepositoryImpl() {} -} \ No newline at end of file diff --git a/lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart b/lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart new file mode 100644 index 000000000..aca7c8933 --- /dev/null +++ b/lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart @@ -0,0 +1,22 @@ +import 'package:get/get.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_identity_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_identity_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_identity_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identities_controller.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart'; + +class IdentityBindings extends Bindings { + + @override + void dependencies() { + IdentityInteractorsBindings().dependencies(); + + Get.lazyPut(() => IdentitiesController( + Get.find(), + Get.find(), + Get.find(), + Get.find(), + )); + } +} \ No newline at end of file diff --git a/lib/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart b/lib/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart new file mode 100644 index 000000000..3c4773401 --- /dev/null +++ b/lib/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart @@ -0,0 +1,42 @@ +import 'package:get/get.dart'; +import 'package:tmail_ui_user/features/base/interactors_bindings.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource/identity_data_source.dart'; +import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/identity_data_source_impl.dart'; +import 'package:tmail_ui_user/features/manage_account/data/network/identity_api.dart'; +import 'package:tmail_ui_user/features/manage_account/data/repository/identity_repository_impl.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/identity_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_identity_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_identity_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_identity_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; + +class IdentityInteractorsBindings extends InteractorsBindings { + + @override + void bindingsDataSource() { + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsDataSourceImpl() { + Get.lazyPut(() => IdentityDataSourceImpl(Get.find())); + } + + @override + void bindingsInteractor() { + Get.lazyPut(() => GetAllIdentitiesInteractor(Get.find())); + Get.lazyPut(() => CreateNewIdentityInteractor(Get.find())); + Get.lazyPut(() => DeleteIdentityInteractor(Get.find())); + Get.lazyPut(() => EditIdentityInteractor(Get.find())); + } + + @override + void bindingsRepository() { + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsRepositoryImpl() { + Get.lazyPut(() => IdentityRepositoryImpl(Get.find())); + } +} \ No newline at end of file diff --git a/lib/features/manage_account/presentation/profiles/profiles_bindings.dart b/lib/features/manage_account/presentation/profiles/profiles_bindings.dart index 95d4381c7..c180c9e45 100644 --- a/lib/features/manage_account/presentation/profiles/profiles_bindings.dart +++ b/lib/features/manage_account/presentation/profiles/profiles_bindings.dart @@ -1,6 +1,6 @@ import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identities_bindings.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_controller.dart'; class ProfileBindings extends BaseBindings { @@ -8,7 +8,7 @@ class ProfileBindings extends BaseBindings { @override void dependencies() { super.dependencies(); - IdentitiesBindings().dependencies(); + IdentityBindings().dependencies(); } @override diff --git a/lib/main/bindings/network/network_bindings.dart b/lib/main/bindings/network/network_bindings.dart index 859aa5a54..7e2e6d592 100644 --- a/lib/main/bindings/network/network_bindings.dart +++ b/lib/main/bindings/network/network_bindings.dart @@ -16,6 +16,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/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'; import 'package:tmail_ui_user/features/session/data/network/session_api.dart'; @@ -79,6 +80,7 @@ class NetworkBindings extends Bindings { Get.put(ManageAccountAPI(Get.find())); Get.put(VacationAPI(Get.find())); Get.put(ContactAPI(Get.find())); + Get.put(IdentityAPI(Get.find())); } void _bindingConnection() {