From da86b48802f6fb17e197f16a03fdedfdc16da2b2 Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 16 Sep 2024 23:05:56 +0700 Subject: [PATCH] fixup! TF-3008 [MOBILE] Apply search To chip --- .../mailbox_dashboard_controller.dart | 33 ++++--- .../widgets/search_input_form_widget.dart | 23 ++--- .../presentation/search_email_controller.dart | 85 +++++++++---------- 3 files changed, 67 insertions(+), 74 deletions(-) diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 67710c5c54..9db4bc3965 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -667,27 +667,26 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo void searchEmail({ String? queryString, - EmailAddress? emailAddress + String? emailAddress }) { log('MailboxDashBoardController::searchEmail():QueryString = $queryString | EmailAddress = $emailAddress'); clearFilterMessageOption(); searchController.clearFilterSuggestion(); - if (queryString?.isNotEmpty == true) { - searchController.updateFilterEmail( - textOption: Some(SearchQuery(queryString!)), - sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder() - ); - } else { - searchController.updateFilterEmail( - sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder() - ); - } - if (emailAddress?.emailAddress.isNotEmpty == true) { - searchController.updateFilterEmail(toOption: Some({emailAddress!.emailAddress})); - dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.to)); - } else { - dispatchAction(StartSearchEmailAction()); - } + + searchController.updateFilterEmail( + textOption: queryString?.isNotEmpty == true + ? Some(SearchQuery(queryString!)) + : null, + toOption: emailAddress?.isNotEmpty == true + ? Some({emailAddress!}) + : null, + sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder() + ); + + dispatchAction(StartSearchEmailAction( + filter: emailAddress?.isNotEmpty == true ? QuickSearchFilter.to : null + )); + FocusManager.instance.primaryFocus?.unfocus(); if (_searchInsideEmailDetailedViewIsActive()) { _closeEmailDetailedView(); diff --git a/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart b/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart index 09399df75c..2feee7f06d 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart @@ -138,11 +138,13 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin { if (query.isNotEmpty || _searchController.listFilterOnSuggestionForm.isNotEmpty) { _searchController.clearSortOrder(); _searchController.clearSearchFilter(); - _searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username); + _searchController.applyFilterSuggestionToSearchFilter( + _dashBoardController.sessionCurrent?.username + ); if (EmailUtils.isEmailAddressValid(query)) { _searchController.searchInputController.clear(); - _dashBoardController.searchEmail(emailAddress: EmailAddress(null, query)); + _dashBoardController.searchEmail(emailAddress: query); } else { _dashBoardController.searchEmail(queryString: query); } @@ -151,8 +153,6 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin { } } - - void _invokeSelectSuggestionItem(PresentationEmail presentationEmail) { _dashBoardController.dispatchAction( OpenEmailDetailedFromSuggestionQuickSearchAction( @@ -168,13 +168,14 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin { _searchController.clearSearchFilter(); _searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username); - if (EmailUtils.isEmailAddressValid(recent.value)) { - _searchController.searchInputController.clear(); - _dashBoardController.searchEmail(emailAddress: EmailAddress(null, recent.value)); - } else { - _searchController.searchInputController.text = recent.value; - _dashBoardController.searchEmail(queryString: recent.value); - } + final isEmailAddress = EmailUtils.isEmailAddressValid(recent.value); + _searchController.searchInputController.text = isEmailAddress + ? '' + : recent.value; + _dashBoardController.searchEmail( + queryString: !isEmailAddress ? recent.value : null, + emailAddress: isEmailAddress ? recent.value : null + ); } Widget _buildShowAllResultButton(BuildContext context, String keyword) { diff --git a/lib/features/search/email/presentation/search_email_controller.dart b/lib/features/search/email/presentation/search_email_controller.dart index 2ff9dc56e8..8da649312e 100644 --- a/lib/features/search/email/presentation/search_email_controller.dart +++ b/lib/features/search/email/presentation/search_email_controller.dart @@ -463,50 +463,46 @@ class SearchEmailController extends BaseController } void showAllResultSearchAction(BuildContext context, String query) { - if (EmailUtils.isEmailAddressValid(query)) { - _updateSimpleSearchFilter( - toOption: Some({query}), - beforeOption: const None(), - positionOption: emailSortOrderType.value.isScrollByPosition() - ? const Some(0) - : const None() - ); + final isEmailAddress = EmailUtils.isEmailAddressValid(query); + + if (isEmailAddress) { textInputSearchController.clear(); currentSearchText.value = ''; } else { setTextInputSearchForm(query); - _updateSimpleSearchFilter( - textOption: Some(SearchQuery(query)), - beforeOption: const None(), - positionOption: emailSortOrderType.value.isScrollByPosition() - ? const Some(0) - : const None() - ); } + + _updateSimpleSearchFilter( + textOption: !isEmailAddress ? Some(SearchQuery(query)) : null, + toOption: isEmailAddress ? Some({query}) : null, + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + _searchEmailAction(context); } void searchEmailByRecentAction(BuildContext context, RecentSearch recentSearch) { - if (EmailUtils.isEmailAddressValid(recentSearch.value)) { - _updateSimpleSearchFilter( - toOption: Some({recentSearch.value}), - beforeOption: const None(), - positionOption: emailSortOrderType.value.isScrollByPosition() - ? const Some(0) - : const None() - ); + final isEmailAddress = EmailUtils.isEmailAddressValid(recentSearch.value); + + _updateSimpleSearchFilter( + textOption: !isEmailAddress ? Some(SearchQuery(recentSearch.value)) : null, + toOption: isEmailAddress ? Some({recentSearch.value}) : null, + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + + if (isEmailAddress) { textInputSearchController.clear(); currentSearchText.value = ''; } else { setTextInputSearchForm(recentSearch.value); - _updateSimpleSearchFilter( - textOption: Some(SearchQuery(recentSearch.value)), - beforeOption: const None(), - positionOption: emailSortOrderType.value.isScrollByPosition() - ? const Some(0) - : const None() - ); } + _searchEmailAction(context); } @@ -523,25 +519,22 @@ class SearchEmailController extends BaseController } void submitSearchAction(BuildContext context, String query) { - if (EmailUtils.isEmailAddressValid(query)) { - _updateSimpleSearchFilter( - toOption: Some({query}), - beforeOption: const None(), - positionOption: emailSortOrderType.value.isScrollByPosition() - ? const Some(0) - : const None() - ); + final isEmailAddress = EmailUtils.isEmailAddressValid(query); + + _updateSimpleSearchFilter( + textOption: !isEmailAddress ? Some(SearchQuery(query)) : null, + toOption: isEmailAddress ? Some({query}) : null, + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + + if (isEmailAddress) { textInputSearchController.clear(); currentSearchText.value = ''; - } else { - _updateSimpleSearchFilter( - textOption: Some(SearchQuery(query)), - beforeOption: const None(), - positionOption: emailSortOrderType.value.isScrollByPosition() - ? const Some(0) - : const None() - ); } + _searchEmailAction(context); }