diff --git a/lib/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart b/lib/features/composer/domain/usecases/get_all_autocomplete_interactor.dart similarity index 81% rename from lib/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart rename to lib/features/composer/domain/usecases/get_all_autocomplete_interactor.dart index 1afb33f27..1793ee283 100644 --- a/lib/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart +++ b/lib/features/composer/domain/usecases/get_all_autocomplete_interactor.dart @@ -1,20 +1,23 @@ -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/mail/email/email_address.dart'; -import 'package:model/model.dart'; +import 'package:model/autocomplete/auto_complete_pattern.dart'; +import 'package:model/contact/contact.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_device_contact_suggestions_state.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_device_contact_suggestions_interactor.dart'; -class GetAutoCompleteWithDeviceContactInteractor { +class GetAllAutoCompleteInteractor { final GetAutoCompleteInteractor _getAutoCompleteInteractor; final GetDeviceContactSuggestionsInteractor _getDeviceContactSuggestionsInteractor; - GetAutoCompleteWithDeviceContactInteractor( - this._getAutoCompleteInteractor, - this._getDeviceContactSuggestionsInteractor); + GetAllAutoCompleteInteractor( + this._getAutoCompleteInteractor, + this._getDeviceContactSuggestionsInteractor + ); Future> execute(AutoCompletePattern autoCompletePattern) async { try { diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 2cc16bc55..7704ad885 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -18,9 +18,7 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:html_editor_enhanced/html_editor.dart' as web_html_editor; import 'package:http_parser/http_parser.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/session/session.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; @@ -44,7 +42,7 @@ import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_draft import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/download_image_as_base64_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart'; +import 'package:tmail_ui_user/features/composer/domain/usecases/get_all_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_web_controller.dart'; import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart'; import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart'; @@ -129,7 +127,7 @@ class ComposerController extends BaseController { final DownloadImageAsBase64Interactor _downloadImageAsBase64Interactor; final TransformHtmlEmailContentInteractor _transformHtmlEmailContentInteractor; - GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor; + GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor; List listToEmailAddress = []; @@ -1029,34 +1027,19 @@ class ComposerController extends BaseController { } } - @override - void injectAutoCompleteBindings(Session? session, AccountId? accountId) { - try { - super.injectAutoCompleteBindings(session, accountId); - _getAutoCompleteWithDeviceContactInteractor = Get.find(); - _getAutoCompleteInteractor = Get.find(); - } catch (e) { - logError('ComposerController::injectAutoCompleteBindings(): $e'); - } - } - Future> getAutoCompleteSuggestion(String word) async { log('ComposerController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource'); - try { - _getAutoCompleteWithDeviceContactInteractor = Get.find(); - _getAutoCompleteInteractor = Get.find(); - } catch (e) { - logError('ComposerController::getAutoCompleteSuggestion(): Exception $e'); - } + _getAllAutoCompleteInteractor = getBinding(); + _getAutoCompleteInteractor = getBinding(); final accountId = mailboxDashBoardController.accountId.value; if (_contactSuggestionSource == ContactSuggestionSource.all) { - if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) { + if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) { return []; } - final listEmailAddress = await _getAutoCompleteWithDeviceContactInteractor! + final listEmailAddress = await _getAllAutoCompleteInteractor! .execute(AutoCompletePattern(word: word, accountId: accountId)) .then((value) => value.fold( (failure) => [], diff --git a/lib/features/contact/presentation/contact_controller.dart b/lib/features/contact/presentation/contact_controller.dart index d55a63001..ff32beeeb 100644 --- a/lib/features/contact/presentation/contact_controller.dart +++ b/lib/features/contact/presentation/contact_controller.dart @@ -14,7 +14,7 @@ import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart'; +import 'package:tmail_ui_user/features/composer/domain/usecases/get_all_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/contact/presentation/model/contact_arguments.dart'; import 'package:tmail_ui_user/features/contact/presentation/widgets/contact_suggestion_box_item.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; @@ -29,7 +29,7 @@ class ContactController extends BaseController { final searchQuery = SearchQuery.initial().obs; final listContactSearched = RxList(); - GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor; + GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor; final Debouncer _deBouncerTime = Debouncer(const Duration(milliseconds: 500), initialValue: ''); @@ -116,31 +116,16 @@ class ContactController extends BaseController { listContactSearched.value = listContact; } - @override - void injectAutoCompleteBindings(Session? session, AccountId? accountId) { - try { - super.injectAutoCompleteBindings(session, accountId); - _getAutoCompleteWithDeviceContactInteractor = Get.find(); - _getAutoCompleteInteractor = Get.find(); - } catch (e) { - logError('ContactController::injectAutoCompleteBindings(): $e'); - } - } - Future> _getAutoCompleteSuggestion(String query) async { - try { - _getAutoCompleteWithDeviceContactInteractor = Get.find(); - _getAutoCompleteInteractor = Get.find(); - } catch (e) { - logError('ContactController::getAutoCompleteSuggestion(): Exception $e'); - } + _getAllAutoCompleteInteractor = getBinding(); + _getAutoCompleteInteractor = getBinding(); if (_contactSuggestionSource == ContactSuggestionSource.all) { - if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) { + if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) { return []; } - final listEmailAddress = await _getAutoCompleteWithDeviceContactInteractor! + final listEmailAddress = await _getAllAutoCompleteInteractor! .execute(AutoCompletePattern(word: query, limit: 30, accountId: _accountId)) .then((value) => value.fold( (failure) => [], diff --git a/lib/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart index 836c076aa..81061dbda 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart @@ -6,7 +6,7 @@ import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/composer/data/repository/auto_complete_repository_impl.dart'; import 'package:tmail_ui_user/features/composer/domain/repository/auto_complete_repository.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart'; +import 'package:tmail_ui_user/features/composer/domain/usecases/get_all_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_device_contact_suggestions_interactor.dart'; class TMailAutoCompleteBindings extends BaseBindings { @@ -25,9 +25,9 @@ class TMailAutoCompleteBindings extends BaseBindings { @override void bindingsInteractor() { Get.put(GetAutoCompleteInteractor(Get.find())); - Get.put(GetAutoCompleteWithDeviceContactInteractor( - Get.find(), - Get.find() + Get.put(GetAllAutoCompleteInteractor( + Get.find(), + Get.find() )); } diff --git a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart index 41ecf941d..835738824 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart @@ -3,8 +3,6 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:model/model.dart'; import 'package:permission_handler/permission_handler.dart'; @@ -13,7 +11,7 @@ import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart'; +import 'package:tmail_ui_user/features/composer/domain/usecases/get_all_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; @@ -33,7 +31,7 @@ import 'package:tmail_ui_user/main/routes/dialog_router.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class AdvancedFilterController extends BaseController { - GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor; + GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor; final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs; @@ -190,35 +188,18 @@ class AdvancedFilterController extends BaseController { } } - @override - void injectAutoCompleteBindings(Session? session, AccountId? accountId) { - try { - super.injectAutoCompleteBindings(session, accountId); - _getAutoCompleteWithDeviceContactInteractor = Get.find(); - _getAutoCompleteInteractor = Get.find(); - } catch (e) { - logError('AdvancedFilterController::injectAutoCompleteBindings(): $e'); - } - } - Future> getAutoCompleteSuggestion(String word) async { log('AdvancedFilterController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource'); - final accountId = _mailboxDashBoardController.accountId.value; - - try { - _getAutoCompleteWithDeviceContactInteractor = Get.find(); - _getAutoCompleteInteractor = Get.find(); - } catch (e) { - logError('AdvancedFilterController::getAutoCompleteSuggestion(): Exception $e'); - } + _getAllAutoCompleteInteractor = getBinding(); + _getAutoCompleteInteractor = getBinding(); if (_contactSuggestionSource == ContactSuggestionSource.all) { - if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) { + if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) { return []; } - final listEmailAddress = await _getAutoCompleteWithDeviceContactInteractor! - .execute(AutoCompletePattern(word: word, accountId: accountId)) + final listEmailAddress = await _getAllAutoCompleteInteractor! + .execute(AutoCompletePattern(word: word, accountId: _mailboxDashBoardController.accountId.value)) .then((value) => value.fold( (failure) => [], (success) => success is GetAutoCompleteSuccess @@ -231,7 +212,7 @@ class AdvancedFilterController extends BaseController { } final listEmailAddress = await _getAutoCompleteInteractor! - .execute(AutoCompletePattern(word: word, accountId: accountId)) + .execute(AutoCompletePattern(word: word, accountId: _mailboxDashBoardController.accountId.value)) .then((value) => value.fold( (failure) => [], (success) => success is GetAutoCompleteSuccess diff --git a/lib/features/manage_account/presentation/forward/controller/forward_recipient_controller.dart b/lib/features/manage_account/presentation/forward/controller/forward_recipient_controller.dart index 3681f7c77..5a0314167 100644 --- a/lib/features/manage_account/presentation/forward/controller/forward_recipient_controller.dart +++ b/lib/features/manage_account/presentation/forward/controller/forward_recipient_controller.dart @@ -9,18 +9,19 @@ import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:model/autocomplete/auto_complete_pattern.dart'; import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; +import 'package:tmail_ui_user/features/composer/domain/usecases/get_all_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart'; import 'package:tmail_ui_user/main/error/capability_validator.dart'; +import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class ForwardRecipientController { final ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact; final TextEditingController inputRecipientController = TextEditingController(); - GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor; + GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor; AccountId? _accountId; Session? _session; @@ -43,8 +44,6 @@ class ForwardRecipientController { ContactAutoCompleteBindings().dependencies(); requireCapability(session!, accountId!, [tmailContactCapabilityIdentifier]); TMailAutoCompleteBindings().dependencies(); - _getAutoCompleteWithDeviceContactInteractor = Get.find(); - _getAutoCompleteInteractor = Get.find(); } catch (e) { logError('ForwardRecipientController::injectAutoCompleteBindings(): exception: $e'); } @@ -52,12 +51,15 @@ class ForwardRecipientController { Future> getAutoCompleteSuggestion(String word) async { log('ForwardRecipientController::getAutoCompleteSuggestion(): $word'); + _getAllAutoCompleteInteractor = getBinding(); + _getAutoCompleteInteractor = getBinding(); + if (_contactSuggestionSource == ContactSuggestionSource.all) { - if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) { - log('ForwardRecipientController::getAutoCompleteSuggestion(): _getAutoCompleteWithDeviceContactInteractor is NULL'); + if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) { + log('ForwardRecipientController::getAutoCompleteSuggestion(): _getAllAutoCompleteInteractor is NULL'); return []; } else { - return await _getAutoCompleteWithDeviceContactInteractor! + return await _getAllAutoCompleteInteractor! .execute(AutoCompletePattern(word: word, accountId: _accountId)) .then((value) => value.fold( (failure) => [],