TF-2302 Get device contact when missing autocomplete capability
Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit ff1f28789c620c73cc2cfd8c5ed538de135f4752)
This commit is contained in:
@@ -1,14 +1,14 @@
|
|||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:model/contact/contact.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||||
|
|
||||||
class GetDeviceContactSuggestionsSuccess extends UIState {
|
class GetDeviceContactSuggestionsSuccess extends UIState {
|
||||||
final List<Contact> results;
|
final List<EmailAddress> listEmailAddress;
|
||||||
|
|
||||||
GetDeviceContactSuggestionsSuccess(this.results);
|
GetDeviceContactSuggestionsSuccess(this.listEmailAddress);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object> get props => [results];
|
List<Object> get props => [listEmailAddress];
|
||||||
}
|
}
|
||||||
|
|
||||||
class GetDeviceContactSuggestionsFailure extends FeatureFailure {
|
class GetDeviceContactSuggestionsFailure extends FeatureFailure {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||||
import 'package:model/autocomplete/auto_complete_pattern.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_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/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_autocomplete_interactor.dart';
|
||||||
@@ -26,16 +26,25 @@ class GetAllAutoCompleteInteractor {
|
|||||||
_getDeviceContactSuggestionsInteractor.execute(autoCompletePattern)
|
_getDeviceContactSuggestionsInteractor.execute(autoCompletePattern)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
final autoCompleteResults = resultExecutions.first.fold(
|
final autoCompleteResults = List<EmailAddress>.empty(growable: true);
|
||||||
(failure) => <EmailAddress>[],
|
|
||||||
(success) => success is GetAutoCompleteSuccess ? success.listEmailAddress : <EmailAddress>[]);
|
|
||||||
|
|
||||||
resultExecutions.last.map((success) {
|
final listEmailAddressFromServer = resultExecutions[0].fold(
|
||||||
if (success is GetDeviceContactSuggestionsSuccess && success.results.isNotEmpty) {
|
(failure) => <EmailAddress>[],
|
||||||
autoCompleteResults.addAll(success.results.map((contact) => contact.toEmailAddress()));
|
(success) => success is GetAutoCompleteSuccess
|
||||||
}
|
? success.listEmailAddress
|
||||||
}
|
: <EmailAddress>[]
|
||||||
);
|
);
|
||||||
|
log('GetAllAutoCompleteInteractor::execute:listEmailAddressFromServerc: $listEmailAddressFromServer');
|
||||||
|
autoCompleteResults.addAll(listEmailAddressFromServer);
|
||||||
|
|
||||||
|
final listEmailAddressFromDevice = resultExecutions[1].fold(
|
||||||
|
(failure) => <EmailAddress>[],
|
||||||
|
(success) => success is GetDeviceContactSuggestionsSuccess
|
||||||
|
? success.listEmailAddress
|
||||||
|
: <EmailAddress>[]
|
||||||
|
);
|
||||||
|
log('GetAllAutoCompleteInteractor::execute:listEmailAddressFromDevice: $listEmailAddressFromDevice');
|
||||||
|
autoCompleteResults.addAll(listEmailAddressFromDevice);
|
||||||
|
|
||||||
return Right<Failure, Success>(GetAutoCompleteSuccess(autoCompleteResults));
|
return Right<Failure, Success>(GetAutoCompleteSuccess(autoCompleteResults));
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
|
|||||||
+7
-2
@@ -1,7 +1,10 @@
|
|||||||
|
|
||||||
import 'package:core/core.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:model/autocomplete/auto_complete_pattern.dart';
|
import 'package:model/autocomplete/auto_complete_pattern.dart';
|
||||||
|
import 'package:model/contact/contact.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/repository/contact_repository.dart';
|
import 'package:tmail_ui_user/features/composer/domain/repository/contact_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/get_device_contact_suggestions_state.dart';
|
import 'package:tmail_ui_user/features/composer/domain/state/get_device_contact_suggestions_state.dart';
|
||||||
|
|
||||||
@@ -13,7 +16,9 @@ class GetDeviceContactSuggestionsInteractor {
|
|||||||
Future<Either<Failure, Success>> execute(AutoCompletePattern autoCompletePattern) async {
|
Future<Either<Failure, Success>> execute(AutoCompletePattern autoCompletePattern) async {
|
||||||
try {
|
try {
|
||||||
final resultList = await _contactRepository.getContactSuggestions(autoCompletePattern);
|
final resultList = await _contactRepository.getContactSuggestions(autoCompletePattern);
|
||||||
return Right<Failure, Success>(GetDeviceContactSuggestionsSuccess(resultList));
|
final listEmailAddress = resultList.map((contact) => contact.toEmailAddress()).toList();
|
||||||
|
log('GetDeviceContactSuggestionsInteractor::execute:listEmailAddress: $listEmailAddress');
|
||||||
|
return Right<Failure, Success>(GetDeviceContactSuggestionsSuccess(listEmailAddress));
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
return Left<Failure, Success>(GetDeviceContactSuggestionsFailure(exception));
|
return Left<Failure, Success>(GetDeviceContactSuggestionsFailure(exception));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,11 +38,13 @@ import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_
|
|||||||
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/download_image_as_base64_state.dart';
|
import 'package:tmail_ui_user/features/composer/domain/state/download_image_as_base64_state.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.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/state/save_email_as_drafts_state.dart';
|
import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_drafts_state.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
|
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/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_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_all_autocomplete_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/composer/domain/usecases/get_device_contact_suggestions_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_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/controller/rich_text_mobile_tablet_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||||
@@ -129,6 +131,7 @@ class ComposerController extends BaseController {
|
|||||||
|
|
||||||
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
||||||
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
||||||
|
GetDeviceContactSuggestionsInteractor? _getDeviceContactSuggestionsInteractor;
|
||||||
|
|
||||||
List<EmailAddress> listToEmailAddress = <EmailAddress>[];
|
List<EmailAddress> listToEmailAddress = <EmailAddress>[];
|
||||||
List<EmailAddress> listCcEmailAddress = <EmailAddress>[];
|
List<EmailAddress> listCcEmailAddress = <EmailAddress>[];
|
||||||
@@ -1031,12 +1034,21 @@ class ComposerController extends BaseController {
|
|||||||
log('ComposerController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
|
log('ComposerController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
|
||||||
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
||||||
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
||||||
|
_getDeviceContactSuggestionsInteractor = getBinding<GetDeviceContactSuggestionsInteractor>();
|
||||||
|
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
|
|
||||||
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
||||||
if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) {
|
if (_getAllAutoCompleteInteractor == null && _getDeviceContactSuggestionsInteractor == null) {
|
||||||
return <EmailAddress>[];
|
return <EmailAddress>[];
|
||||||
|
} else if (_getDeviceContactSuggestionsInteractor != null) {
|
||||||
|
final listEmailAddress = await _getDeviceContactSuggestionsInteractor!
|
||||||
|
.execute(AutoCompletePattern(word: word, accountId: accountId))
|
||||||
|
.then((value) => value.fold(
|
||||||
|
(failure) => <EmailAddress>[],
|
||||||
|
(success) => _getAutoCompleteSuccess(success, word)
|
||||||
|
));
|
||||||
|
return listEmailAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
final listEmailAddress = await _getAllAutoCompleteInteractor!
|
final listEmailAddress = await _getAllAutoCompleteInteractor!
|
||||||
@@ -1076,6 +1088,20 @@ class ComposerController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return success.listEmailAddress;
|
return success.listEmailAddress;
|
||||||
|
} else if (success is GetDeviceContactSuggestionsSuccess) {
|
||||||
|
if (success.listEmailAddress.isEmpty == true && GetUtils.isEmail(word)) {
|
||||||
|
final unknownEmailAddress = EmailAddress(word, word);
|
||||||
|
return <EmailAddress>[unknownEmailAddress];
|
||||||
|
}
|
||||||
|
if (GetUtils.isEmail(word)) {
|
||||||
|
bool isContainsTypedEmail = success.listEmailAddress.any((emailAddress) => emailAddress.email == word);
|
||||||
|
if (!isContainsTypedEmail) {
|
||||||
|
final unknownEmailAddress = EmailAddress(word, word);
|
||||||
|
success.listEmailAddress.insert(0, unknownEmailAddress);
|
||||||
|
return success.listEmailAddress;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return success.listEmailAddress;
|
||||||
} else {
|
} else {
|
||||||
return <EmailAddress>[];
|
return <EmailAddress>[];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,10 @@ import 'package:debounce_throttle/debounce_throttle.dart';
|
|||||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
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/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/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_autocomplete_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_all_autocomplete_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/composer/domain/usecases/get_device_contact_suggestions_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/contact/presentation/model/contact_arguments.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/contact/presentation/widgets/contact_suggestion_box_item.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
@@ -31,6 +33,7 @@ class ContactController extends BaseController {
|
|||||||
|
|
||||||
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
||||||
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
||||||
|
GetDeviceContactSuggestionsInteractor? _getDeviceContactSuggestionsInteractor;
|
||||||
|
|
||||||
final Debouncer<String> _deBouncerTime = Debouncer<String>(const Duration(milliseconds: 500), initialValue: '');
|
final Debouncer<String> _deBouncerTime = Debouncer<String>(const Duration(milliseconds: 500), initialValue: '');
|
||||||
AccountId? _accountId;
|
AccountId? _accountId;
|
||||||
@@ -119,10 +122,21 @@ class ContactController extends BaseController {
|
|||||||
Future<List<EmailAddress>> _getAutoCompleteSuggestion(String query) async {
|
Future<List<EmailAddress>> _getAutoCompleteSuggestion(String query) async {
|
||||||
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
||||||
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
||||||
|
_getDeviceContactSuggestionsInteractor = getBinding<GetDeviceContactSuggestionsInteractor>();
|
||||||
|
|
||||||
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
||||||
if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) {
|
if (_getAllAutoCompleteInteractor == null && _getDeviceContactSuggestionsInteractor == null) {
|
||||||
return <EmailAddress>[];
|
return <EmailAddress>[];
|
||||||
|
} else if (_getDeviceContactSuggestionsInteractor != null) {
|
||||||
|
final listEmailAddress = await _getDeviceContactSuggestionsInteractor!
|
||||||
|
.execute(AutoCompletePattern(word: query, limit: 30, accountId: _accountId))
|
||||||
|
.then((value) => value.fold(
|
||||||
|
(failure) => <EmailAddress>[],
|
||||||
|
(success) => success is GetDeviceContactSuggestionsSuccess
|
||||||
|
? success.listEmailAddress
|
||||||
|
: <EmailAddress>[]
|
||||||
|
));
|
||||||
|
return listEmailAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
final listEmailAddress = await _getAllAutoCompleteInteractor!
|
final listEmailAddress = await _getAllAutoCompleteInteractor!
|
||||||
|
|||||||
+15
-1
@@ -10,8 +10,10 @@ import 'package:super_tag_editor/tag_editor.dart';
|
|||||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
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/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/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_autocomplete_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_all_autocomplete_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/composer/domain/usecases/get_device_contact_suggestions_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.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/extensions/presentation_mailbox_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||||
@@ -33,6 +35,7 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
|||||||
class AdvancedFilterController extends BaseController {
|
class AdvancedFilterController extends BaseController {
|
||||||
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
||||||
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
||||||
|
GetDeviceContactSuggestionsInteractor? _getDeviceContactSuggestionsInteractor;
|
||||||
|
|
||||||
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
|
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
|
||||||
final hasAttachment = false.obs;
|
final hasAttachment = false.obs;
|
||||||
@@ -192,10 +195,21 @@ class AdvancedFilterController extends BaseController {
|
|||||||
log('AdvancedFilterController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
|
log('AdvancedFilterController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
|
||||||
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
||||||
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
||||||
|
_getDeviceContactSuggestionsInteractor = getBinding<GetDeviceContactSuggestionsInteractor>();
|
||||||
|
|
||||||
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
||||||
if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) {
|
if (_getAllAutoCompleteInteractor == null && _getDeviceContactSuggestionsInteractor == null) {
|
||||||
return <EmailAddress>[];
|
return <EmailAddress>[];
|
||||||
|
} else if (_getDeviceContactSuggestionsInteractor != null) {
|
||||||
|
final listEmailAddress = await _getDeviceContactSuggestionsInteractor!
|
||||||
|
.execute(AutoCompletePattern(word: word, accountId: _mailboxDashBoardController.accountId.value))
|
||||||
|
.then((value) => value.fold(
|
||||||
|
(failure) => <EmailAddress>[],
|
||||||
|
(success) => success is GetDeviceContactSuggestionsSuccess
|
||||||
|
? success.listEmailAddress
|
||||||
|
: <EmailAddress>[]
|
||||||
|
));
|
||||||
|
return listEmailAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
final listEmailAddress = await _getAllAutoCompleteInteractor!
|
final listEmailAddress = await _getAllAutoCompleteInteractor!
|
||||||
|
|||||||
+15
-2
@@ -9,8 +9,10 @@ import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
|||||||
import 'package:model/autocomplete/auto_complete_pattern.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/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/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_all_autocomplete_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_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_device_contact_suggestions_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/contact_autocomplete_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_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/error/capability_validator.dart';
|
||||||
@@ -23,6 +25,7 @@ class ForwardRecipientController {
|
|||||||
|
|
||||||
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
||||||
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
||||||
|
GetDeviceContactSuggestionsInteractor? _getDeviceContactSuggestionsInteractor;
|
||||||
AccountId? _accountId;
|
AccountId? _accountId;
|
||||||
Session? _session;
|
Session? _session;
|
||||||
|
|
||||||
@@ -53,11 +56,21 @@ class ForwardRecipientController {
|
|||||||
log('ForwardRecipientController::getAutoCompleteSuggestion(): $word');
|
log('ForwardRecipientController::getAutoCompleteSuggestion(): $word');
|
||||||
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
||||||
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
|
||||||
|
_getDeviceContactSuggestionsInteractor = getBinding<GetDeviceContactSuggestionsInteractor>();
|
||||||
|
|
||||||
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
||||||
if (_getAllAutoCompleteInteractor == null || _getAutoCompleteInteractor == null) {
|
if (_getAllAutoCompleteInteractor == null && _getDeviceContactSuggestionsInteractor == null) {
|
||||||
log('ForwardRecipientController::getAutoCompleteSuggestion(): _getAllAutoCompleteInteractor is NULL');
|
|
||||||
return <EmailAddress>[];
|
return <EmailAddress>[];
|
||||||
|
} else if (_getDeviceContactSuggestionsInteractor != null) {
|
||||||
|
final listEmailAddress = await _getDeviceContactSuggestionsInteractor!
|
||||||
|
.execute(AutoCompletePattern(word: word, accountId: _accountId))
|
||||||
|
.then((value) => value.fold(
|
||||||
|
(failure) => <EmailAddress>[],
|
||||||
|
(success) => success is GetDeviceContactSuggestionsSuccess
|
||||||
|
? success.listEmailAddress
|
||||||
|
: <EmailAddress>[]
|
||||||
|
));
|
||||||
|
return listEmailAddress;
|
||||||
} else {
|
} else {
|
||||||
return await _getAllAutoCompleteInteractor!
|
return await _getAllAutoCompleteInteractor!
|
||||||
.execute(AutoCompletePattern(word: word, accountId: _accountId))
|
.execute(AutoCompletePattern(word: word, accountId: _accountId))
|
||||||
|
|||||||
Reference in New Issue
Block a user