TF-3006 [WEB] Handle mail address in quick search bar

This commit is contained in:
dab246
2024-09-17 13:13:28 +07:00
committed by Dat H. Pham
parent 518be4416d
commit 3392bf16bc
9 changed files with 111 additions and 99 deletions
@@ -54,13 +54,15 @@ class OpenEmailDetailedFromSuggestionQuickSearchAction extends DashBoardAction {
List<Object?> get props => [presentationEmail]; List<Object?> get props => [presentationEmail];
} }
class StartSearchEmailAction extends DashBoardAction { class StartSearchEmailAction extends DashBoardAction {}
final QuickSearchFilter? filter;
StartSearchEmailAction({this.filter}); class StartSearchEmailBySearchFilterAction extends DashBoardAction {
final QuickSearchFilter searchFilter;
StartSearchEmailBySearchFilterAction(this.searchFilter);
@override @override
List<Object?> get props => [filter]; List<Object?> get props => [searchFilter];
} }
class EmptyTrashAction extends DashBoardAction {} class EmptyTrashAction extends DashBoardAction {}
@@ -154,3 +156,5 @@ class CancelSelectionSearchEmailAction extends DashBoardAction {}
class OpenAdvancedSearchViewAction extends DashBoardAction {} class OpenAdvancedSearchViewAction extends DashBoardAction {}
class ClearSearchFilterAppliedAction extends DashBoardAction {} class ClearSearchFilterAppliedAction extends DashBoardAction {}
class ClearAdvancedSearchFilterEmailAction extends DashBoardAction {}
@@ -79,14 +79,9 @@ class AdvancedFilterController extends BaseController {
} }
void clearSearchFilter() { void clearSearchFilter() {
searchController.clearSearchFilter();
_resetAllToOriginalValue(); _resetAllToOriginalValue();
_clearAllTextFieldInput(); _clearAllTextFieldInput();
searchController.searchInputController.clear(); _mailboxDashBoardController.handleClearAdvancedSearchFilterEmail();
searchController.clearSortOrder();
searchController.deactivateAdvancedSearch();
searchController.isAdvancedSearchViewOpen.value = false;
_mailboxDashBoardController.searchEmail();
} }
void _updateFilterEmailFromAdvancedSearchView() { void _updateFilterEmailFromAdvancedSearchView() {
@@ -119,8 +114,6 @@ class AdvancedFilterController extends BaseController {
searchController.updateFilterEmail(toOption: const None()); searchController.updateFilterEmail(toOption: const None());
} }
searchController.updateFilterEmail(sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder());
searchController.updateFilterEmail( searchController.updateFilterEmail(
mailboxOption: optionOf(_destinationMailboxSelected), mailboxOption: optionOf(_destinationMailboxSelected),
subjectOption: optionOf(subjectFilterInputController.text), subjectOption: optionOf(subjectFilterInputController.text),
@@ -170,7 +163,7 @@ class AdvancedFilterController extends BaseController {
searchController.updateFilterEmail(beforeOption: const None()); searchController.updateFilterEmail(beforeOption: const None());
} }
searchController.isAdvancedSearchViewOpen.value = false; searchController.isAdvancedSearchViewOpen.value = false;
_mailboxDashBoardController.searchEmail(); _mailboxDashBoardController.handleAdvancedSearchEmail();
} }
Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async { Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
@@ -405,17 +398,8 @@ class AdvancedFilterController extends BaseController {
); );
} else if (action is ClearDateRangeToAdvancedSearch) { } else if (action is ClearDateRangeToAdvancedSearch) {
_updateDateRangeTime(action.receiveTime); _updateDateRangeTime(action.receiveTime);
} else if (action is StartSearchEmailAction) { } else if (action is StartSearchEmailBySearchFilterAction) {
switch(action.filter) { _handleSearchEmailBySearchFilterAction(action.searchFilter);
case QuickSearchFilter.from:
_updateFromField();
break;
case QuickSearchFilter.to:
_updateToField();
break;
default:
break;
}
} else if (action is SearchEmailByFromFieldsAction) { } else if (action is SearchEmailByFromFieldsAction) {
searchController.clearSearchFilter(); searchController.clearSearchFilter();
_resetAllToOriginalValue(); _resetAllToOriginalValue();
@@ -480,6 +464,19 @@ class AdvancedFilterController extends BaseController {
applyAdvancedSearchFilter(); applyAdvancedSearchFilter();
} }
void _handleSearchEmailBySearchFilterAction(QuickSearchFilter searchFilter) {
switch(searchFilter) {
case QuickSearchFilter.from:
_updateFromField();
break;
case QuickSearchFilter.to:
_updateToField();
break;
default:
break;
}
}
@override @override
void onClose() { void onClose() {
_removeFocusListener(); _removeFocusListener();
@@ -667,20 +667,55 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE; bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE;
void searchEmail({String? queryString}) { void handleAdvancedSearchEmail() {
log('MailboxDashBoardController::searchEmail():'); log('MailboxDashBoardController::handleAdvancedSearchEmail:');
clearFilterMessageOption(); clearFilterMessageOption();
searchController.clearFilterSuggestion();
if (queryString?.isNotEmpty == true) {
searchController.updateFilterEmail(textOption: Some(SearchQuery(queryString!)));
}
searchController.updateFilterEmail(sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder());
dispatchAction(StartSearchEmailAction());
FocusManager.instance.primaryFocus?.unfocus();
if (_searchInsideEmailDetailedViewIsActive()) { if (_searchInsideEmailDetailedViewIsActive()) {
_closeEmailDetailedView(); _closeEmailDetailedView();
} }
_unSelectedMailbox(); _unSelectedMailbox();
searchController.clearFilterSuggestion();
FocusManager.instance.primaryFocus?.unfocus();
dispatchAction(StartSearchEmailAction());
}
void handleClearAdvancedSearchFilterEmail() {
log('MailboxDashBoardController::handleClearAdvancedSearchFilterEmail:');
clearFilterMessageOption();
if (_searchInsideEmailDetailedViewIsActive()) {
_closeEmailDetailedView();
}
_unSelectedMailbox();
searchController.clearAllFilterSearch();
FocusManager.instance.primaryFocus?.unfocus();
dispatchAction(ClearAdvancedSearchFilterEmailAction());
}
void searchEmailByQueryString(String queryString) {
final isMailAddress = EmailUtils.isEmailAddressValid(queryString);
log('MailboxDashBoardController::searchEmailByQueryString():QueryString = $queryString | isMailAddress = $isMailAddress');
clearFilterMessageOption();
if (_searchInsideEmailDetailedViewIsActive()) {
_closeEmailDetailedView();
}
_unSelectedMailbox();
searchController.clearFilterSuggestion();
searchController.updateFilterEmail(
textOption: !isMailAddress
? Some(SearchQuery(queryString))
: null,
fromOption: isMailAddress
? Some({queryString})
: null);
FocusManager.instance.primaryFocus?.unfocus();
if (isMailAddress) {
dispatchAction(StartSearchEmailBySearchFilterAction(QuickSearchFilter.from));
} else {
dispatchAction(StartSearchEmailAction());
}
} }
bool _searchInsideEmailDetailedViewIsActive() { bool _searchInsideEmailDetailedViewIsActive() {
@@ -1675,7 +1710,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
if (newContact is EmailAddress) { if (newContact is EmailAddress) {
searchController.updateFilterEmail(fromOption: Some({newContact.emailAddress})); searchController.updateFilterEmail(fromOption: Some({newContact.emailAddress}));
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.from)); dispatchAction(StartSearchEmailBySearchFilterAction(QuickSearchFilter.from));
} }
} }
@@ -1693,7 +1728,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
if (newContact is EmailAddress) { if (newContact is EmailAddress) {
searchController.updateFilterEmail(toOption: Some({newContact.emailAddress})); searchController.updateFilterEmail(toOption: Some({newContact.emailAddress}));
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.to)); dispatchAction(StartSearchEmailBySearchFilterAction(QuickSearchFilter.to));
} }
} }
@@ -1721,11 +1756,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
searchController.updateFilterEmail( searchController.updateFilterEmail(
mailboxOption: destinationMailbox.id == PresentationMailbox.unifiedMailbox.id mailboxOption: destinationMailbox.id == PresentationMailbox.unifiedMailbox.id
? const None() ? const None()
: Some(destinationMailbox), : Some(destinationMailbox)
beforeOption: const None(),
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
? const Some(0)
: const None()
); );
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
@@ -1745,8 +1776,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
searchController.updateFilterEmail( searchController.updateFilterEmail(
emailReceiveTimeTypeOption: Some(receiveTime), emailReceiveTimeTypeOption: Some(receiveTime),
startDateOption: optionOf(startDate?.toUTCDate()), startDateOption: optionOf(startDate?.toUTCDate()),
endDateOption: optionOf(endDate?.toUTCDate()), endDateOption: optionOf(endDate?.toUTCDate())
beforeOption: const None()
); );
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
} }
@@ -1756,8 +1786,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
searchController.updateFilterEmail( searchController.updateFilterEmail(
emailReceiveTimeTypeOption: Some(receiveTime), emailReceiveTimeTypeOption: Some(receiveTime),
startDateOption: const None(), startDateOption: const None(),
endDateOption: const None(), endDateOption: const None()
beforeOption: const None()
); );
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
} }
@@ -1767,7 +1796,6 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
log('MailboxDashBoardController::selectSortOrderQuickSearchFilter():sortOrder: $sortOrder'); log('MailboxDashBoardController::selectSortOrderQuickSearchFilter():sortOrder: $sortOrder');
popBack(); popBack();
searchController.sortOrderFiltered.value = sortOrder; searchController.sortOrderFiltered.value = sortOrder;
searchController.updateFilterEmail(sortOrderOption: sortOrder.getSortOrder());
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
} }
@@ -1776,27 +1804,24 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
searchController.updateFilterEmail( searchController.updateFilterEmail(
emailReceiveTimeTypeOption: const Some(EmailReceiveTimeType.allTime), emailReceiveTimeTypeOption: const Some(EmailReceiveTimeType.allTime),
startDateOption: const None(), startDateOption: const None(),
endDateOption: const None(), endDateOption: const None()
beforeOption: const None()
); );
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
} }
void _deleteSortOrderSearchFilter() { void _deleteSortOrderSearchFilter() {
searchController.sortOrderFiltered.value = EmailSortOrderType.mostRecent; searchController.sortOrderFiltered.value = EmailSortOrderType.mostRecent;
searchController.updateFilterEmail(
sortOrderOption: EmailSortOrderType.mostRecent.getSortOrder());
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
} }
void _deleteFromSearchFilter() { void _deleteFromSearchFilter() {
searchController.updateFilterEmail(fromOption: const None()); searchController.updateFilterEmail(fromOption: const None());
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.from)); dispatchAction(StartSearchEmailBySearchFilterAction(QuickSearchFilter.from));
} }
void _deleteToSearchFilter() { void _deleteToSearchFilter() {
searchController.updateFilterEmail(toOption: const None()); searchController.updateFilterEmail(toOption: const None());
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.to)); dispatchAction(StartSearchEmailBySearchFilterAction(QuickSearchFilter.to));
} }
void _deleteHasAttachmentSearchFilter() { void _deleteHasAttachmentSearchFilter() {
@@ -1805,13 +1830,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
} }
void _deleteFolderSearchFilter() { void _deleteFolderSearchFilter() {
searchController.updateFilterEmail( searchController.updateFilterEmail(mailboxOption: const None());
mailboxOption: const None(),
beforeOption: const None(),
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
? const Some(0)
: const None()
);
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
} }
@@ -170,7 +170,6 @@ class SearchController extends BaseController with DateRangePickerMixin {
Option<UTCDate>? beforeOption, Option<UTCDate>? beforeOption,
Option<UTCDate>? startDateOption, Option<UTCDate>? startDateOption,
Option<UTCDate>? endDateOption, Option<UTCDate>? endDateOption,
Option<Set<Comparator>>? sortOrderOption,
Option<int>? positionOption, Option<int>? positionOption,
}) { }) {
searchEmailFilter.value = searchEmailFilter.value.copyWith( searchEmailFilter.value = searchEmailFilter.value.copyWith(
@@ -185,7 +184,6 @@ class SearchController extends BaseController with DateRangePickerMixin {
beforeOption: beforeOption, beforeOption: beforeOption,
startDateOption: startDateOption, startDateOption: startDateOption,
endDateOption: endDateOption, endDateOption: endDateOption,
sortOrderOption: sortOrderOption,
positionOption: positionOption, positionOption: positionOption,
); );
searchEmailFilter.refresh(); searchEmailFilter.refresh();
@@ -284,6 +282,15 @@ class SearchController extends BaseController with DateRangePickerMixin {
sortOrderFiltered.value = EmailSortOrderType.mostRecent; sortOrderFiltered.value = EmailSortOrderType.mostRecent;
} }
void clearAllFilterSearch() {
_clearAllTextInputSimpleSearch();
clearSortOrder();
clearFilterSuggestion();
clearSearchFilter();
deactivateAdvancedSearch();
hideAdvancedSearchFormView();
}
void disableAllSearchEmail() { void disableAllSearchEmail() {
_clearAllTextInputSimpleSearch(); _clearAllTextInputSimpleSearch();
deactivateSimpleSearch(); deactivateSimpleSearch();
@@ -4,7 +4,6 @@ import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart';
import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart'; import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart';
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:jmap_dart_client/jmap/core/utc_date.dart'; import 'package:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
import 'package:model/email/prefix_email_address.dart'; import 'package:model/email/prefix_email_address.dart';
@@ -28,12 +27,9 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
final UTCDate? before; final UTCDate? before;
final UTCDate? startDate; final UTCDate? startDate;
final UTCDate? endDate; final UTCDate? endDate;
final Set<Comparator>? sortOrder;
final int? position; final int? position;
factory SearchEmailFilter.initial() => SearchEmailFilter( factory SearchEmailFilter.initial() => SearchEmailFilter();
sortOrder: EmailSortOrderType.mostRecent.getSortOrder().toNullable()
);
SearchEmailFilter({ SearchEmailFilter({
Set<String>? from, Set<String>? from,
@@ -48,7 +44,6 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
this.before, this.before,
this.startDate, this.startDate,
this.endDate, this.endDate,
this.sortOrder,
this.position, this.position,
}) : from = from ?? <String>{}, }) : from = from ?? <String>{},
to = to ?? <String>{}, to = to ?? <String>{},
@@ -71,7 +66,6 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
Option<UTCDate>? beforeOption, Option<UTCDate>? beforeOption,
Option<UTCDate>? startDateOption, Option<UTCDate>? startDateOption,
Option<UTCDate>? endDateOption, Option<UTCDate>? endDateOption,
Option<Set<Comparator>>? sortOrderOption,
Option<int>? positionOption, Option<int>? positionOption,
}) { }) {
return SearchEmailFilter( return SearchEmailFilter(
@@ -87,7 +81,6 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
before: getOptionParam(beforeOption, before), before: getOptionParam(beforeOption, before),
startDate: getOptionParam(startDateOption, startDate), startDate: getOptionParam(startDateOption, startDate),
endDate: getOptionParam(endDateOption, endDate), endDate: getOptionParam(endDateOption, endDate),
sortOrder: getOptionParam(sortOrderOption, sortOrder),
position: getOptionParam(positionOption, position), position: getOptionParam(positionOption, position),
); );
} }
@@ -166,7 +159,6 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
before, before,
startDate, startDate,
endDate, endDate,
sortOrder,
position, position,
]; ];
} }
@@ -4,6 +4,7 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/quick_search/quick_search_input_form.dart'; import 'package:core/presentation/views/quick_search/quick_search_input_form.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/direction_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_portal/flutter_portal.dart';
@@ -126,17 +127,20 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
}); });
} }
void _invokeSearchEmailAction(String query) { void _invokeSearchEmailAction(String queryString) {
log('SearchInputFormWidget::_invokeSearchEmailAction:QueryString = $queryString');
_searchController.searchFocus.unfocus(); _searchController.searchFocus.unfocus();
_searchController.enableSearch(); _searchController.enableSearch();
if (query.isNotEmpty) { if (queryString.isNotEmpty) {
_searchController.saveRecentSearch(RecentSearch.now(query)); _searchController.saveRecentSearch(RecentSearch.now(queryString));
} }
if (query.isNotEmpty || _searchController.listFilterOnSuggestionForm.isNotEmpty) { if (queryString.isNotEmpty || _searchController.listFilterOnSuggestionForm.isNotEmpty) {
_searchController.clearSortOrder();
_searchController.clearSearchFilter();
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username); _searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
_dashBoardController.searchEmail(queryString: query); _dashBoardController.searchEmailByQueryString(queryString);
} else { } else {
_dashBoardController.clearSearchEmail(); _dashBoardController.clearSearchEmail();
} }
@@ -154,9 +158,10 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
_searchController.searchInputController.text = recent.value; _searchController.searchInputController.text = recent.value;
_searchController.searchFocus.unfocus(); _searchController.searchFocus.unfocus();
_searchController.enableSearch(); _searchController.enableSearch();
_searchController.clearSortOrder();
_searchController.clearSearchFilter();
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username); _searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
_dashBoardController.searchEmail(queryString: recent.value); _dashBoardController.searchEmailByQueryString(recent.value);
} }
Widget _buildShowAllResultButton(BuildContext context, String keyword) { Widget _buildShowAllResultButton(BuildContext context, String keyword) {
@@ -10,7 +10,6 @@ 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/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/core/utc_date.dart'; import 'package:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
@@ -616,7 +615,6 @@ class SearchEmailController extends BaseController
void selectSortOrderQuickSearchFilter(BuildContext context, EmailSortOrderType sortOrderType) { void selectSortOrderQuickSearchFilter(BuildContext context, EmailSortOrderType sortOrderType) {
popBack(); popBack();
_updateSimpleSearchFilter( _updateSimpleSearchFilter(
sortOrderOption: sortOrderType.getSortOrder(),
beforeOption: const None(), beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition() ? const Some(0) : const None() positionOption: emailSortOrderType.value.isScrollByPosition() ? const Some(0) : const None()
); );
@@ -744,7 +742,6 @@ class SearchEmailController extends BaseController
Option<UTCDate>? beforeOption, Option<UTCDate>? beforeOption,
Option<UTCDate>? startDateOption, Option<UTCDate>? startDateOption,
Option<UTCDate>? endDateOption, Option<UTCDate>? endDateOption,
Option<Set<Comparator>>? sortOrderOption,
Option<int>? positionOption, Option<int>? positionOption,
Option<Set<String>>? hasKeywordOption, Option<Set<String>>? hasKeywordOption,
}) { }) {
@@ -758,7 +755,6 @@ class SearchEmailController extends BaseController
beforeOption: beforeOption, beforeOption: beforeOption,
startDateOption: startDateOption, startDateOption: startDateOption,
endDateOption: endDateOption, endDateOption: endDateOption,
sortOrderOption: sortOrderOption,
positionOption: positionOption, positionOption: positionOption,
hasKeywordOption: hasKeywordOption, hasKeywordOption: hasKeywordOption,
); );
@@ -1008,7 +1004,6 @@ class SearchEmailController extends BaseController
void _deleteSortOrderSearchFilter(BuildContext context) { void _deleteSortOrderSearchFilter(BuildContext context) {
_updateSimpleSearchFilter( _updateSimpleSearchFilter(
sortOrderOption: EmailSortOrderType.mostRecent.getSortOrder(),
beforeOption: const None(), beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition() positionOption: emailSortOrderType.value.isScrollByPosition()
? const Some(0) ? const Some(0)
@@ -301,7 +301,9 @@ class ThreadController extends BaseController with EmailActionController {
mailboxContain: mailboxContain, mailboxContain: mailboxContain,
); );
mailboxDashBoardController.clearDashBoardAction(); mailboxDashBoardController.clearDashBoardAction();
} else if (action is StartSearchEmailAction) { } else if (action is StartSearchEmailAction
|| action is ClearAdvancedSearchFilterEmailAction
|| action is StartSearchEmailBySearchFilterAction) {
cancelSelectEmail(); cancelSelectEmail();
_replaceBrowserHistory(); _replaceBrowserHistory();
_searchEmail(); _searchEmail();
@@ -816,17 +818,11 @@ class ThreadController extends BaseController with EmailActionController {
mailboxDashBoardController.emailsInCurrentMailbox.clear(); mailboxDashBoardController.emailsInCurrentMailbox.clear();
canSearchMore = false; canSearchMore = false;
if (searchController.sortOrderFiltered.value.isScrollByPosition()) { searchController.updateFilterEmail(
searchController.updateFilterEmail( positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
positionOption: const Some(0), ? const Some(0)
beforeOption: const None(), : const None(),
); beforeOption: const None());
} else {
searchController.updateFilterEmail(
positionOption: const None(),
beforeOption: const None(),
);
}
searchController.activateSimpleSearch(); searchController.activateSimpleSearch();
@@ -394,7 +394,7 @@ void main() {
when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager())); when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager()));
// expect query in search controller update as expected // expect query in search controller update as expected
mailboxDashboardController.searchEmail(queryString: queryString); mailboxDashboardController.searchEmailByQueryString(queryString);
expect(searchController.searchEmailFilter.value.text, SearchQuery(queryString)); expect(searchController.searchEmailFilter.value.text, SearchQuery(queryString));
// expect sort in search controller update as expected // expect sort in search controller update as expected
@@ -463,7 +463,6 @@ void main() {
text: SearchQuery(emailContainsWord), text: SearchQuery(emailContainsWord),
notKeyword: {emailNotContainsWord}, notKeyword: {emailNotContainsWord},
emailReceiveTimeType: EmailReceiveTimeType.last30Days, emailReceiveTimeType: EmailReceiveTimeType.last30Days,
sortOrder: EmailSortOrderType.relevance.getSortOrder().toNullable(),
position: 0)); position: 0));
// expect mailbox dashboard controller calls GetEmailsInMailboxInteractor // expect mailbox dashboard controller calls GetEmailsInMailboxInteractor
@@ -500,8 +499,7 @@ void main() {
when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager())); when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager()));
// act // act
mailboxDashboardController.searchEmail(queryString: queryString); mailboxDashboardController.searchEmailByQueryString(queryString);
mailboxDashboardController.selectSortOrderQuickSearchFilter(context, EmailSortOrderType.oldest);
mailboxDashboardController.selectHasAttachmentSearchFilter(); mailboxDashboardController.selectHasAttachmentSearchFilter();
mailboxDashboardController.selectReceiveTimeQuickSearchFilter(context, EmailReceiveTimeType.last30Days); mailboxDashboardController.selectReceiveTimeQuickSearchFilter(context, EmailReceiveTimeType.last30Days);
@@ -521,7 +519,6 @@ void main() {
text: SearchQuery(queryString), text: SearchQuery(queryString),
emailReceiveTimeType: EmailReceiveTimeType.last30Days, emailReceiveTimeType: EmailReceiveTimeType.last30Days,
hasAttachment: true, hasAttachment: true,
sortOrder: EmailSortOrderType.oldest.getSortOrder().toNullable()
) )
); );
}); });