diff --git a/lib/features/composer/data/repository/auto_complete_repository_impl.dart b/lib/features/composer/data/repository/auto_complete_repository_impl.dart index cc852147a..b2fe84ec5 100644 --- a/lib/features/composer/data/repository/auto_complete_repository_impl.dart +++ b/lib/features/composer/data/repository/auto_complete_repository_impl.dart @@ -1,5 +1,6 @@ import 'package:contact/data/datasource/auto_complete_datasource.dart'; +import 'package:core/utils/app_logger.dart'; 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/repository/auto_complete_repository.dart'; @@ -12,14 +13,19 @@ class AutoCompleteRepositoryImpl extends AutoCompleteRepository { @override Future> getAutoComplete(AutoCompletePattern autoCompletePattern) async { - List listEmailAddress = []; - - await Future.wait(autoCompleteDataSources.map( + if (autoCompleteDataSources.isEmpty) { + log('AutoCompleteRepositoryImpl::getAutoComplete(): autoCompleteDataSources IS NULL'); + return []; + } + final listEmailAddress = await Future + .wait(autoCompleteDataSources.map( (datasource) => datasource.getAutoComplete(autoCompletePattern))) .then((newListResult) { + List listEmailAddress = []; for (var listEmails in newListResult) { listEmailAddress.addAll(listEmails); } + return listEmailAddress; }); return listEmailAddress; diff --git a/lib/features/mailbox_dashboard/presentation/bindings/autocomplete_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/autocomplete_bindings.dart new file mode 100644 index 000000000..e21c61e8c --- /dev/null +++ b/lib/features/mailbox_dashboard/presentation/bindings/autocomplete_bindings.dart @@ -0,0 +1,65 @@ + +import 'package:contact/data/datasource/auto_complete_datasource.dart'; +import 'package:contact/data/datasource_impl/tmail_contact_datasource_impl.dart'; +import 'package:contact/data/network/contact_api.dart'; +import 'package:core/utils/app_logger.dart'; +import 'package:get/get.dart'; +import 'package:tmail_ui_user/features/base/base_bindings.dart'; +import 'package:tmail_ui_user/features/composer/data/datasource/contact_datasource.dart'; +import 'package:tmail_ui_user/features/composer/data/datasource_impl/contact_datasource_impl.dart'; +import 'package:tmail_ui_user/features/composer/data/repository/auto_complete_repository_impl.dart'; +import 'package:tmail_ui_user/features/composer/data/repository/contact_repository_impl.dart'; +import 'package:tmail_ui_user/features/composer/domain/repository/auto_complete_repository.dart'; +import 'package:tmail_ui_user/features/composer/domain/repository/contact_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_device_contact_suggestions_interactor.dart'; +import 'package:tmail_ui_user/features/composer/presentation/extensions/session_extension.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; + +class AutoCompleteBindings extends BaseBindings { + + final _mailboxDashBoardController = Get.find(); + final Set _dataSources = {}; + + @override + void bindingsController() {} + + @override + void bindingsDataSource() { + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsDataSourceImpl() { + _dataSources.clear(); + Get.lazyPut(() => ContactDataSourceImpl()); + if (_mailboxDashBoardController.sessionCurrent?.hasSupportAutoComplete == true) { + Get.lazyPut(() => TMailContactDataSourceImpl(Get.find())); + _dataSources.add(Get.find()); + } + } + + @override + void bindingsInteractor() { + Get.lazyPut(() => GetDeviceContactSuggestionsInteractor(Get.find())); + Get.lazyPut(() => GetAutoCompleteInteractor(Get.find())); + Get.lazyPut(() => GetAutoCompleteWithDeviceContactInteractor( + Get.find(), + Get.find() + )); + } + + @override + void bindingsRepository() { + Get.lazyPut(() => Get.find()); + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsRepositoryImpl() { + log('AutoCompleteBindings::bindingsRepositoryImpl(): _dataSources: ${_dataSources.length}'); + Get.lazyPut(() => ContactRepositoryImpl(Get.find())); + Get.lazyPut(() => AutoCompleteRepositoryImpl(_dataSources)); + } +} \ No newline at end of file diff --git a/lib/main/bindings/network/network_bindings.dart b/lib/main/bindings/network/network_bindings.dart index 23691195f..19d03497d 100644 --- a/lib/main/bindings/network/network_bindings.dart +++ b/lib/main/bindings/network/network_bindings.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:contact/data/network/contact_api.dart'; import 'package:core/core.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; @@ -77,6 +78,7 @@ class NetworkBindings extends Bindings { Get.find(), Get.find())); Get.put(ManageAccountAPI(Get.find())); + Get.put(ContactAPI(Get.find())); } void _bindingConnection() {