TF-971 Implement method injectAutoCompleteBindings in all controller handle autocomplete

This commit is contained in:
dab246
2022-09-22 19:07:55 +07:00
committed by Dat H. Pham
parent 129118bd3c
commit ac9f00c948
16 changed files with 239 additions and 203 deletions
+1 -4
View File
@@ -74,12 +74,9 @@ abstract class BaseController extends GetxController with MessageDialogActionMix
} }
void injectAutoCompleteBindings(Session? session, AccountId? accountId) { void injectAutoCompleteBindings(Session? session, AccountId? accountId) {
if (session == null || accountId == null) {
return;
}
try { try {
ContactAutoCompleteBindings().dependencies(); ContactAutoCompleteBindings().dependencies();
requireCapability(session, accountId, [tmailContactCapabilityIdentifier]); requireCapability(session!, accountId!, [tmailContactCapabilityIdentifier]);
TMailAutoCompleteBindings().dependencies(); TMailAutoCompleteBindings().dependencies();
} catch (e) { } catch (e) {
logError('BaseController::injectAutoCompleteBindings(): exception: $e'); logError('BaseController::injectAutoCompleteBindings(): exception: $e');
@@ -20,7 +20,6 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_i
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart'; import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart'; import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/autocomplete_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart'; import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/log_out_oidc_state.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/log_out_oidc_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
@@ -188,16 +187,12 @@ abstract class ReloadableController extends BaseController {
newConfig: tokenOidcSuccess.oidcConfiguration); newConfig: tokenOidcSuccess.oidcConfiguration);
} }
void injectAutoCompleteBindings() {
AutoCompleteBindings().dependencies();
}
void injectVacationBindings(Session? session, AccountId? accountId) { void injectVacationBindings(Session? session, AccountId? accountId) {
try { try {
requireCapability(session!, accountId!, [CapabilityIdentifier.jmapVacationResponse]); requireCapability(session!, accountId!, [CapabilityIdentifier.jmapVacationResponse]);
VacationInteractorsBindings().dependencies(); VacationInteractorsBindings().dependencies();
} catch(e) { } catch(e) {
logError('MailboxDashBoardController::injectVacationBindings(): exception: $e'); logError('ReloadableController::injectVacationBindings(): exception: $e');
} }
} }
} }
@@ -14,7 +14,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:http_parser/http_parser.dart'; 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/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/identities/identity.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
@@ -97,8 +99,8 @@ class ComposerController extends BaseController {
final RichTextWebController richTextWebController; final RichTextWebController richTextWebController;
final DownloadImageAsBase64Interactor _downloadImageAsBase64Interactor; final DownloadImageAsBase64Interactor _downloadImageAsBase64Interactor;
late GetAutoCompleteWithDeviceContactInteractor _getAutoCompleteWithDeviceContactInteractor; GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor;
late GetAutoCompleteInteractor _getAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor;
List<EmailAddress> listToEmailAddress = <EmailAddress>[]; List<EmailAddress> listToEmailAddress = <EmailAddress>[];
List<EmailAddress> listCcEmailAddress = <EmailAddress>[]; List<EmailAddress> listCcEmailAddress = <EmailAddress>[];
@@ -314,6 +316,10 @@ class ComposerController extends BaseController {
final arguments = kIsWeb ? mailboxDashBoardController.routerArguments : Get.arguments; final arguments = kIsWeb ? mailboxDashBoardController.routerArguments : Get.arguments;
if (arguments is ComposerArguments) { if (arguments is ComposerArguments) {
composerArguments.value = arguments; composerArguments.value = arguments;
injectAutoCompleteBindings(
mailboxDashBoardController.sessionCurrent,
mailboxDashBoardController.accountId.value);
if (arguments.emailActionType == EmailActionType.edit) { if (arguments.emailActionType == EmailActionType.edit) {
_getEmailContentAction(arguments); _getEmailContentAction(arguments);
} }
@@ -721,30 +727,55 @@ class ComposerController extends BaseController {
} }
} }
Future<List<EmailAddress>> getAutoCompleteSuggestion( @override
{required String word}) async { void injectAutoCompleteBindings(Session? session, AccountId? accountId) {
log('ComposerController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource'); try {
super.injectAutoCompleteBindings(session, accountId);
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
} catch (e) {
logError('ComposerController::injectAutoCompleteBindings(): $e');
}
}
if (!Get.isRegistered<GetAutoCompleteWithDeviceContactInteractor>() || Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
!Get.isRegistered<GetAutoCompleteInteractor>()) { log('ComposerController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
mailboxDashBoardController.injectAutoCompleteBindings(); try {
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
} catch (e) {
logError('ComposerController::getAutoCompleteSuggestion(): Exception $e');
} }
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>(); final accountId = mailboxDashBoardController.accountId.value;
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
if (_contactSuggestionSource == ContactSuggestionSource.all) { if (_contactSuggestionSource == ContactSuggestionSource.all) {
return await _getAutoCompleteWithDeviceContactInteractor if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) {
.execute(AutoCompletePattern(word: word, accountId: mailboxDashBoardController.accountId.value)) return <EmailAddress>[];
}
final listEmailAddress = await _getAutoCompleteWithDeviceContactInteractor!
.execute(AutoCompletePattern(word: word, accountId: accountId))
.then((value) => value.fold( .then((value) => value.fold(
(failure) => <EmailAddress>[], (failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess ? success.listEmailAddress : <EmailAddress>[])); (success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
return listEmailAddress;
} else {
if (_getAutoCompleteInteractor == null) {
return <EmailAddress>[];
}
final listEmailAddress = await _getAutoCompleteInteractor!
.execute(AutoCompletePattern(word: word, accountId: accountId))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
return listEmailAddress;
} }
return await _getAutoCompleteInteractor
.execute(AutoCompletePattern(word: word, accountId: mailboxDashBoardController.accountId.value))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess ? success.listEmailAddress : <EmailAddress>[]));
} }
void openPickAttachmentMenu(BuildContext context, List<Widget> actionTiles) { void openPickAttachmentMenu(BuildContext context, List<Widget> actionTiles) {
@@ -298,8 +298,7 @@ class ComposerView extends GetWidget<ComposerController>
..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress)) ..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress))
..addOnAddEmailAddressTypeAction((prefixEmailAddress) => controller.addEmailAddressType(prefixEmailAddress)) ..addOnAddEmailAddressTypeAction((prefixEmailAddress) => controller.addEmailAddressType(prefixEmailAddress))
..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress)) ..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress))
..addOnOpenSuggestionBoxEmailAddress(() => controller.getAutoCompleteSuggestion(word: '')) ..addOnSuggestionEmailAddress(controller.getAutoCompleteSuggestion))
..addOnSuggestionEmailAddress((word) => controller.getAutoCompleteSuggestion(word: word)))
.build() .build()
)), )),
Obx(() => controller.listEmailAddressType.contains(PrefixEmailAddress.cc) == true Obx(() => controller.listEmailAddressType.contains(PrefixEmailAddress.cc) == true
@@ -319,8 +318,7 @@ class ComposerView extends GetWidget<ComposerController>
..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress)) ..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress))
..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress)) ..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress))
..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress)) ..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress))
..addOnOpenSuggestionBoxEmailAddress(() => controller.getAutoCompleteSuggestion(word: '')) ..addOnSuggestionEmailAddress(controller.getAutoCompleteSuggestion))
..addOnSuggestionEmailAddress((word) => controller.getAutoCompleteSuggestion(word: word)))
.build()) .build())
: const SizedBox.shrink() : const SizedBox.shrink()
), ),
@@ -341,8 +339,7 @@ class ComposerView extends GetWidget<ComposerController>
..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress)) ..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress))
..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress)) ..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress))
..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress)) ..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress))
..addOnOpenSuggestionBoxEmailAddress(() => controller.getAutoCompleteSuggestion(word: '')) ..addOnSuggestionEmailAddress(controller.getAutoCompleteSuggestion))
..addOnSuggestionEmailAddress((word) => controller.getAutoCompleteSuggestion(word: word)))
.build()) .build())
: const SizedBox.shrink() : const SizedBox.shrink()
), ),
@@ -421,8 +421,7 @@ class ComposerView extends GetWidget<ComposerController>
..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress)) ..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress))
..addOnAddEmailAddressTypeAction((prefixEmailAddress) => controller.addEmailAddressType(prefixEmailAddress)) ..addOnAddEmailAddressTypeAction((prefixEmailAddress) => controller.addEmailAddressType(prefixEmailAddress))
..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress)) ..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress))
..addOnOpenSuggestionBoxEmailAddress(() => controller.getAutoCompleteSuggestion(word: '')) ..addOnSuggestionEmailAddress(controller.getAutoCompleteSuggestion))
..addOnSuggestionEmailAddress((word) => controller.getAutoCompleteSuggestion(word: word)))
.build() .build()
)), )),
Obx(() => controller.listEmailAddressType.contains(PrefixEmailAddress.cc) == true Obx(() => controller.listEmailAddressType.contains(PrefixEmailAddress.cc) == true
@@ -442,8 +441,7 @@ class ComposerView extends GetWidget<ComposerController>
..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress)) ..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress))
..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress)) ..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress))
..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress)) ..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress))
..addOnOpenSuggestionBoxEmailAddress(() => controller.getAutoCompleteSuggestion(word: '')) ..addOnSuggestionEmailAddress(controller.getAutoCompleteSuggestion))
..addOnSuggestionEmailAddress((word) => controller.getAutoCompleteSuggestion(word: word)))
.build()) .build())
: const SizedBox.shrink() : const SizedBox.shrink()
), ),
@@ -464,8 +462,7 @@ class ComposerView extends GetWidget<ComposerController>
..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress)) ..addOnShowFullListEmailAddressAction((prefixEmailAddress) => controller.showFullEmailAddress(prefixEmailAddress))
..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress)) ..addOnDeleteEmailAddressTypeAction((prefixEmailAddress) => controller.deleteEmailAddressType(prefixEmailAddress))
..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress)) ..addOnUpdateListEmailAddressAction((prefixEmailAddress, listEmailAddress) => controller.updateListEmailAddress(prefixEmailAddress, listEmailAddress))
..addOnOpenSuggestionBoxEmailAddress(() => controller.getAutoCompleteSuggestion(word: '')) ..addOnSuggestionEmailAddress(controller.getAutoCompleteSuggestion))
..addOnSuggestionEmailAddress((word) => controller.getAutoCompleteSuggestion(word: word)))
.build()) .build())
: const SizedBox.shrink() : const SizedBox.shrink()
), ),
@@ -1,9 +0,0 @@
import 'package:contact/contact_module.dart' as contact;
import 'package:jmap_dart_client/jmap/core/session/session.dart';
extension SessionExtension on Session {
bool get hasSupportTmailAutoComplete =>
capabilities.containsKey(contact.tmailContactCapabilityIdentifier);
}
@@ -9,17 +9,16 @@ 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:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:debounce_throttle/debounce_throttle.dart'; import 'package:debounce_throttle/debounce_throttle.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/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_autocomplete_with_device_contact_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/presentation/extensions/session_extension.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/mailbox_dashboard/presentation/bindings/autocomplete_bindings.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';
import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class ContactController extends GetxController { class ContactController extends BaseController {
final textInputSearchController = TextEditingController(); final textInputSearchController = TextEditingController();
final textInputSearchFocus = FocusNode(); final textInputSearchFocus = FocusNode();
@@ -28,8 +27,8 @@ class ContactController extends GetxController {
final searchQuery = SearchQuery.initial().obs; final searchQuery = SearchQuery.initial().obs;
final listContactSearched = RxList<EmailAddress>(); final listContactSearched = RxList<EmailAddress>();
late GetAutoCompleteWithDeviceContactInteractor _getAutoCompleteWithDeviceContactInteractor; GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor;
late GetAutoCompleteInteractor _getAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor;
late Debouncer<String> _deBouncerTime; late Debouncer<String> _deBouncerTime;
late AccountId _accountId; late AccountId _accountId;
@@ -54,6 +53,7 @@ class ContactController extends GetxController {
if (listContactSelected.isNotEmpty) { if (listContactSelected.isNotEmpty) {
contactSelected = EmailAddress(listContactSelected.first, listContactSelected.first); contactSelected = EmailAddress(listContactSelected.first, listContactSelected.first);
} }
injectAutoCompleteBindings(_session, _accountId);
} }
if (!BuildUtils.isWeb) { if (!BuildUtils.isWeb) {
Future.delayed( Future.delayed(
@@ -108,33 +108,52 @@ class ContactController extends GetxController {
listContactSearched.value = listContact; listContactSearched.value = listContact;
} }
Future<List<EmailAddress>> _getAutoCompleteSuggestion(String query) async { @override
if(_session.hasSupportTmailAutoComplete != true) return <EmailAddress>[]; void injectAutoCompleteBindings(Session? session, AccountId? accountId) {
try {
super.injectAutoCompleteBindings(session, accountId);
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
} catch (e) {
logError('ContactController::injectAutoCompleteBindings(): $e');
}
}
if (!Get.isRegistered<GetAutoCompleteWithDeviceContactInteractor>() || Future<List<EmailAddress>> _getAutoCompleteSuggestion(String query) async {
!Get.isRegistered<GetAutoCompleteInteractor>()) { try {
AutoCompleteBindings().dependencies(); _getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
} catch (e) {
logError('ContactController::getAutoCompleteSuggestion(): Exception $e');
} }
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
if (_contactSuggestionSource == ContactSuggestionSource.all) { if (_contactSuggestionSource == ContactSuggestionSource.all) {
return await _getAutoCompleteWithDeviceContactInteractor if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) {
return <EmailAddress>[];
}
final listEmailAddress = await _getAutoCompleteWithDeviceContactInteractor!
.execute(AutoCompletePattern(word: query, limit: 30, accountId: _accountId)) .execute(AutoCompletePattern(word: query, limit: 30, accountId: _accountId))
.then((value) => value.fold( .then((value) => value.fold(
(failure) => <EmailAddress>[], (failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess (success) => success is GetAutoCompleteSuccess
? success.listEmailAddress ? success.listEmailAddress
: <EmailAddress>[])); : <EmailAddress>[]));
return listEmailAddress;
} else {
if (_getAutoCompleteInteractor == null) {
return <EmailAddress>[];
}
final listEmailAddress = await _getAutoCompleteInteractor!
.execute(AutoCompletePattern(word: query, limit: 30, accountId: _accountId))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
return listEmailAddress;
} }
return await _getAutoCompleteInteractor
.execute(AutoCompletePattern(word: query, limit: 30, accountId: _accountId))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
} }
void selectContact(BuildContext context, EmailAddress emailAddress) { void selectContact(BuildContext context, EmailAddress emailAddress) {
@@ -147,4 +166,10 @@ class ContactController extends GetxController {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
popBack(); popBack();
} }
@override
void onDone() {}
@override
void onError(error) {}
} }
@@ -1,63 +1,26 @@
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:get/get.dart'; import 'package:get/get.dart';
import 'package:tmail_ui_user/features/base/base_bindings.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/emails_forward_creator/presentation/emails_forward_creator_controller.dart'; import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_controller.dart';
class EmailsForwardCreatorBindings extends BaseBindings { class EmailsForwardCreatorBindings extends BaseBindings {
final Set<AutoCompleteDataSource> _dataSources = {};
@override @override
void bindingsController() { void bindingsController() {
Get.lazyPut(() => EmailsForwardCreatorController( Get.lazyPut(() => EmailsForwardCreatorController());
Get.find<GetAutoCompleteWithDeviceContactInteractor>(),
Get.find<GetAutoCompleteInteractor>(),
));
} }
@override @override
void bindingsDataSource() { void bindingsDataSource() {}
Get.lazyPut<ContactDataSource>(() => Get.find<ContactDataSourceImpl>());
}
@override @override
void bindingsDataSourceImpl() { void bindingsDataSourceImpl() {}
_dataSources.clear();
Get.lazyPut(() => ContactDataSourceImpl());
Get.lazyPut(() => TMailContactDataSourceImpl(Get.find<ContactAPI>()));
_dataSources.add(Get.find<TMailContactDataSourceImpl>());
}
@override @override
void bindingsInteractor() { void bindingsInteractor() {}
Get.lazyPut(() => GetDeviceContactSuggestionsInteractor(Get.find<ContactRepository>()));
Get.lazyPut(() => GetAutoCompleteInteractor(Get.find<AutoCompleteRepository>()));
Get.lazyPut(() => GetAutoCompleteWithDeviceContactInteractor(
Get.find<GetAutoCompleteInteractor>(),
Get.find<GetDeviceContactSuggestionsInteractor>()
));
}
@override @override
void bindingsRepository() { void bindingsRepository() {}
Get.lazyPut<ContactRepository>(() => Get.find<ContactRepositoryImpl>());
Get.lazyPut<AutoCompleteRepository>(() => Get.find<AutoCompleteRepositoryImpl>());
}
@override @override
void bindingsRepositoryImpl() { void bindingsRepositoryImpl() {}
Get.lazyPut(() => ContactRepositoryImpl(Get.find<ContactDataSource>()));
Get.lazyPut(() => AutoCompleteRepositoryImpl(_dataSources));
}
} }
@@ -12,8 +12,6 @@ import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_
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/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_autocomplete_with_device_contact_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/presentation/extensions/session_extension.dart';
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/model/mails_forward_creator_arguments.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -23,21 +21,20 @@ class EmailsForwardCreatorController extends BaseController {
final ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact; final ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact;
final _forwardController = Get.find<ForwardController>(); final _forwardController = Get.find<ForwardController>();
late AccountId _accountId; GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor;
late Session? _session; GetAutoCompleteInteractor? _getAutoCompleteInteractor;
late GetAutoCompleteWithDeviceContactInteractor _getAutoCompleteWithDeviceContactInteractor;
late GetAutoCompleteInteractor _getAutoCompleteInteractor;
final listEmailForwards = RxSet<EmailAddress>(); final listEmailForwards = RxSet<EmailAddress>();
EmailsForwardCreatorController( EmailsForwardCreatorController();
this._getAutoCompleteWithDeviceContactInteractor,
this._getAutoCompleteInteractor, AccountId? get _accountId => _forwardController.emailsForwardCreatorArguments.value?.accountId;
);
Session? get _session => _forwardController.emailsForwardCreatorArguments.value?.session;
@override @override
void onReady() { void onReady() {
_getArguments(); injectAutoCompleteBindings(_session, _accountId);
super.onReady(); super.onReady();
} }
@@ -53,35 +50,53 @@ class EmailsForwardCreatorController extends BaseController {
@override @override
void onError(error) {} void onError(error) {}
void _getArguments() { @override
final arguments = Get.arguments; void injectAutoCompleteBindings(Session? session, AccountId? accountId) {
if (arguments is MailsForwardCreatorArguments) { try {
_accountId = arguments.accountId; super.injectAutoCompleteBindings(session, accountId);
_session = arguments.session; _getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
} catch (e) {
logError('EmailsForwardCreatorController::injectAutoCompleteBindings(): $e');
} }
} }
Future<List<EmailAddress>> getAutoCompleteSuggestion( Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
{required String word}) async {
log('EmailsForwardCreatorController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource'); log('EmailsForwardCreatorController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
try {
if(_session?.hasSupportTmailAutoComplete != true) return <EmailAddress>[]; _getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>(); } catch (e) {
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>(); logError('EmailsForwardCreatorController::getAutoCompleteSuggestion(): Exception $e');
}
if (_contactSuggestionSource == ContactSuggestionSource.all) { if (_contactSuggestionSource == ContactSuggestionSource.all) {
return await _getAutoCompleteWithDeviceContactInteractor if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) {
.execute(AutoCompletePattern(word: word, accountId: _accountId)) logError('EmailsForwardCreatorController::_getAutoCompleteWithDeviceContactInteractor(): is null');
.then((value) => value.fold( return <EmailAddress>[];
(failure) => <EmailAddress>[], } else {
(success) => success is GetAutoCompleteSuccess ? success.listEmailAddress : <EmailAddress>[])); return await _getAutoCompleteWithDeviceContactInteractor!
.execute(AutoCompletePattern(word: word, accountId: _accountId))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
}
} else {
if (_getAutoCompleteInteractor == null) {
logError('EmailsForwardCreatorController::_getAutoCompleteInteractor(): is null');
return <EmailAddress>[];
} else {
return await _getAutoCompleteInteractor!
.execute(AutoCompletePattern(word: word, accountId: _accountId))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
}
} }
return await _getAutoCompleteInteractor
.execute(AutoCompletePattern(word: word, accountId: _accountId))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess ? success.listEmailAddress : <EmailAddress>[]));
} }
void addToListEmailForwards(EmailAddress emailAddress) { void addToListEmailForwards(EmailAddress emailAddress) {
@@ -100,6 +115,8 @@ class EmailsForwardCreatorController extends BaseController {
void closeView(BuildContext context) { void closeView(BuildContext context) {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
clearAll();
if(kIsWeb) { if(kIsWeb) {
_clearListEmailForwards(); _clearListEmailForwards();
_forwardController.accountDashBoardController.emailsForwardCreatorIsActive.toggle(); _forwardController.accountDashBoardController.emailsForwardCreatorIsActive.toggle();
@@ -113,14 +130,18 @@ class EmailsForwardCreatorController extends BaseController {
if(inputEmailForwardController.text.trim().isNotEmpty) { if(inputEmailForwardController.text.trim().isNotEmpty) {
listEmailForwards.add(EmailAddress(null, inputEmailForwardController.text.trim())); listEmailForwards.add(EmailAddress(null, inputEmailForwardController.text.trim()));
} }
inputEmailForwardController.clear(); clearAll();
if (listEmailForwards.isNotEmpty) {
final newListEmailForwards = List<EmailAddress>.from(listEmailForwards);
_forwardController.handleAddRecipients(newListEmailForwards);
}
if(kIsWeb) { if(kIsWeb) {
_forwardController.accountDashBoardController.emailsForwardCreatorIsActive.toggle();
_forwardController.handleAddRecipients(listEmailForwards.toList());
_clearListEmailForwards(); _clearListEmailForwards();
_forwardController.accountDashBoardController.emailsForwardCreatorIsActive.toggle();
} else { } else {
popBack(result: listEmailForwards.toList()); popBack();
} }
} }
} }
@@ -139,12 +139,7 @@ class EmailsForwardCreatorView extends GetWidget<EmailsForwardCreatorController>
controller.clearAll(); controller.clearAll();
} }
}) })
..addOnSuggestionCallbackAction((pattern) { ..addOnSuggestionCallbackAction(controller.getAutoCompleteSuggestion)).build(),
if (pattern != null) {
controller.getAutoCompleteSuggestion(word: pattern.trim());
}
}))
.build(),
), ),
Expanded( Expanded(
child: Obx(() => ListView.builder( child: Obx(() => ListView.builder(
@@ -6,7 +6,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/widgets/emails_forward_input_decoration_builder.dart'; import 'package:tmail_ui_user/features/emails_forward_creator/presentation/widgets/emails_forward_input_decoration_builder.dart';
typedef OnSelectedSuggestionAction = Function(EmailAddress emailAddress); typedef OnSelectedSuggestionAction = Function(EmailAddress emailAddress);
typedef OnSuggestionCallbackAction = Function(String? pattern); typedef OnSuggestionCallbackAction = Function(String pattern);
typedef OnSummitedCallbackAction = Function(String? pattern); typedef OnSummitedCallbackAction = Function(String? pattern);
class EmailsForwardInputWithDropListFieldBuilder { class EmailsForwardInputWithDropListFieldBuilder {
@@ -2,9 +2,12 @@ import 'package:collection/collection.dart';
import 'package:core/core.dart'; import 'package:core/core.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.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:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/model.dart'; import 'package:model/model.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.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/usecases/get_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart';
@@ -20,9 +23,9 @@ import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class AdvancedFilterController extends GetxController { class AdvancedFilterController extends BaseController {
late GetAutoCompleteWithDeviceContactInteractor _getAutoCompleteWithDeviceContactInteractor; GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor;
late GetAutoCompleteInteractor _getAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor;
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs; final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
final hasAttachment = false.obs; final hasAttachment = false.obs;
@@ -49,11 +52,15 @@ class AdvancedFilterController extends GetxController {
final focusManager = InputFieldFocusManager.initial(); final focusManager = InputFieldFocusManager.initial();
@override @override
void onReady() async { void onReady() {
if (!BuildUtils.isWeb) { if (!BuildUtils.isWeb) {
Future.delayed( Future.delayed(
const Duration(milliseconds: 500), () => _checkContactPermission()); const Duration(milliseconds: 500),
() => _checkContactPermission());
} }
injectAutoCompleteBindings(
_mailboxDashBoardController.sessionCurrent,
_mailboxDashBoardController.accountId.value);
super.onReady(); super.onReady();
} }
@@ -148,36 +155,55 @@ class AdvancedFilterController extends GetxController {
} }
} }
Future<List<EmailAddress>> getAutoCompleteSuggestion( @override
{required String word}) async { void injectAutoCompleteBindings(Session? session, AccountId? accountId) {
try {
super.injectAutoCompleteBindings(session, accountId);
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
} catch (e) {
logError('AdvancedFilterController::injectAutoCompleteBindings(): $e');
}
}
if (!Get.isRegistered<GetAutoCompleteWithDeviceContactInteractor>() || Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
!Get.isRegistered<GetAutoCompleteInteractor>()) { log('AdvancedFilterController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
_mailboxDashBoardController.injectAutoCompleteBindings(); final accountId = _mailboxDashBoardController.accountId.value;
try {
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
} catch (e) {
logError('AdvancedFilterController::getAutoCompleteSuggestion(): Exception $e');
} }
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
if (_contactSuggestionSource == ContactSuggestionSource.all) { if (_contactSuggestionSource == ContactSuggestionSource.all) {
return await _getAutoCompleteWithDeviceContactInteractor if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) {
.execute(AutoCompletePattern( return <EmailAddress>[];
word: word, }
accountId: _mailboxDashBoardController.accountId.value))
final listEmailAddress = await _getAutoCompleteWithDeviceContactInteractor!
.execute(AutoCompletePattern(word: word, accountId: accountId))
.then((value) => value.fold( .then((value) => value.fold(
(failure) => <EmailAddress>[], (failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess (success) => success is GetAutoCompleteSuccess
? success.listEmailAddress ? success.listEmailAddress
: <EmailAddress>[])); : <EmailAddress>[]));
return listEmailAddress;
} else {
if (_getAutoCompleteInteractor == null) {
return <EmailAddress>[];
}
final listEmailAddress = await _getAutoCompleteInteractor!
.execute(AutoCompletePattern(word: word, accountId: accountId))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
return listEmailAddress;
} }
return await _getAutoCompleteInteractor
.execute(AutoCompletePattern(
word: word, accountId: _mailboxDashBoardController.accountId.value))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]));
} }
bool _checkAdvancedSearchHasApply() { bool _checkAdvancedSearchHasApply() {
@@ -219,4 +245,10 @@ class AdvancedFilterController extends GetxController {
dateFilterInputController.dispose(); dateFilterInputController.dispose();
super.onClose(); super.onClose();
} }
@override
void onDone() {}
@override
void onError(error) {}
} }
@@ -337,7 +337,7 @@ class MailboxDashBoardController extends ReloadableController {
if (arguments is Session) { if (arguments is Session) {
sessionCurrent = arguments; sessionCurrent = arguments;
accountId.value = sessionCurrent?.accounts.keys.first; accountId.value = sessionCurrent?.accounts.keys.first;
injectAutoCompleteBindings(); injectAutoCompleteBindings(sessionCurrent, accountId.value);
injectVacationBindings(sessionCurrent, accountId.value); injectVacationBindings(sessionCurrent, accountId.value);
} else { } else {
if (kIsWeb) { if (kIsWeb) {
@@ -885,7 +885,7 @@ class MailboxDashBoardController extends ReloadableController {
accountId.value = sessionCurrent?.accounts.keys.first; accountId.value = sessionCurrent?.accounts.keys.first;
_getUserProfile(); _getUserProfile();
_handleComposerCache(); _handleComposerCache();
injectAutoCompleteBindings(); injectAutoCompleteBindings(sessionCurrent, accountId.value);
injectVacationBindings(sessionCurrent, accountId.value); injectVacationBindings(sessionCurrent, accountId.value);
_getVacationResponse(); _getVacationResponse();
} }
@@ -246,9 +246,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
const Padding(padding: EdgeInsets.all(4)), const Padding(padding: EdgeInsets.all(4)),
_responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context) _responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context)
? TextFieldAutoCompleteEmailAddress( ? TextFieldAutoCompleteEmailAddress(
optionsBuilder: (word) async { optionsBuilder: controller.getAutoCompleteSuggestion,
return controller.getAutoCompleteSuggestion(word: word);
},
advancedSearchFilterField: advancedSearchFilterField, advancedSearchFilterField: advancedSearchFilterField,
initialTags: listTagInitial, initialTags: listTagInitial,
currentFocusNode: currentFocusNode, currentFocusNode: currentFocusNode,
@@ -282,9 +280,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
) )
: Expanded( : Expanded(
child: TextFieldAutoCompleteEmailAddress( child: TextFieldAutoCompleteEmailAddress(
optionsBuilder: (word) async { optionsBuilder: controller.getAutoCompleteSuggestion,
return controller.getAutoCompleteSuggestion(word: word);
},
advancedSearchFilterField: advancedSearchFilterField, advancedSearchFilterField: advancedSearchFilterField,
initialTags: listTagInitial, initialTags: listTagInitial,
currentFocusNode: currentFocusNode, currentFocusNode: currentFocusNode,
@@ -48,8 +48,8 @@ class ForwardController extends BaseController {
final selectionMode = Rx<SelectMode>(SelectMode.INACTIVE); final selectionMode = Rx<SelectMode>(SelectMode.INACTIVE);
final listRecipientForward = RxList<RecipientForward>(); final listRecipientForward = RxList<RecipientForward>();
final currentForward = Rxn<TMailForward>(); final currentForward = Rxn<TMailForward>();
final emailsForwardCreatorArguments = Rxn<MailsForwardCreatorArguments>();
final listForwards = <String>[].obs; final listForwards = <String>[].obs;
@@ -239,17 +239,13 @@ class ForwardController extends BaseController {
void goToAddEmailsForward() async { void goToAddEmailsForward() async {
final accountId = accountDashBoardController.accountId.value; final accountId = accountDashBoardController.accountId.value;
if (accountId != null) { final session = accountDashBoardController.sessionCurrent.value;
if (accountId != null && session != null) {
emailsForwardCreatorArguments.value = MailsForwardCreatorArguments(accountId, session);
if (kIsWeb) { if (kIsWeb) {
_openMailsForwardCreatorOverlay(); _openMailsForwardCreatorOverlay();
} else { } else {
final listEmail = await push( push(AppRoutes.EMAILS_FORWARD_CREATOR);
AppRoutes.EMAILS_FORWARD_CREATOR,
arguments: MailsForwardCreatorArguments(accountId, accountDashBoardController.sessionCurrent.value));
if (listEmail is List<EmailAddress>) {
handleAddRecipients(listEmail);
}
} }
} }
} }
@@ -98,7 +98,7 @@ class ManageAccountDashBoardController extends ReloadableController {
accountId.value = session.accounts.keys.first; accountId.value = session.accounts.keys.first;
sessionCurrent.value = session; sessionCurrent.value = session;
_getUserProfile(); _getUserProfile();
injectAutoCompleteBindings(); injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
injectVacationBindings(sessionCurrent.value, accountId.value); injectVacationBindings(sessionCurrent.value, accountId.value);
_getVacationResponse(); _getVacationResponse();
} }
@@ -110,7 +110,7 @@ class ManageAccountDashBoardController extends ReloadableController {
accountId.value = arguments.session?.accounts.keys.first; accountId.value = arguments.session?.accounts.keys.first;
sessionCurrent.value = arguments.session; sessionCurrent.value = arguments.session;
_getUserProfile(); _getUserProfile();
injectAutoCompleteBindings(); injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
injectVacationBindings(sessionCurrent.value, accountId.value); injectVacationBindings(sessionCurrent.value, accountId.value);
_getVacationResponse(); _getVacationResponse();
if (arguments.menuSettingCurrent != null) { if (arguments.menuSettingCurrent != null) {
@@ -131,13 +131,13 @@ class ManageAccountDashBoardController extends ReloadableController {
_getAllVacationInteractor = Get.find<GetAllVacationInteractor>(); _getAllVacationInteractor = Get.find<GetAllVacationInteractor>();
_updateVacationInteractor = Get.find<UpdateVacationInteractor>(); _updateVacationInteractor = Get.find<UpdateVacationInteractor>();
} catch (e) { } catch (e) {
logError('MailboxDashBoardController::injectVacationBindings(): $e'); logError('ManageAccountDashBoardController::injectVacationBindings(): $e');
} }
} }
Future<void> _getAppVersion() async { Future<void> _getAppVersion() async {
final info = await PackageInfo.fromPlatform(); final info = await PackageInfo.fromPlatform();
log('MailboxDashBoardController::_getAppVersion(): ${info.version}'); log('ManageAccountDashBoardController::_getAppVersion(): ${info.version}');
appInformation.value = info; appInformation.value = info;
} }