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
@@ -79,14 +79,9 @@ class AdvancedFilterController extends BaseController {
}
void clearSearchFilter() {
searchController.clearSearchFilter();
_resetAllToOriginalValue();
_clearAllTextFieldInput();
searchController.searchInputController.clear();
searchController.clearSortOrder();
searchController.deactivateAdvancedSearch();
searchController.isAdvancedSearchViewOpen.value = false;
_mailboxDashBoardController.searchEmail();
_mailboxDashBoardController.handleClearAdvancedSearchFilterEmail();
}
void _updateFilterEmailFromAdvancedSearchView() {
@@ -119,8 +114,6 @@ class AdvancedFilterController extends BaseController {
searchController.updateFilterEmail(toOption: const None());
}
searchController.updateFilterEmail(sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder());
searchController.updateFilterEmail(
mailboxOption: optionOf(_destinationMailboxSelected),
subjectOption: optionOf(subjectFilterInputController.text),
@@ -170,7 +163,7 @@ class AdvancedFilterController extends BaseController {
searchController.updateFilterEmail(beforeOption: const None());
}
searchController.isAdvancedSearchViewOpen.value = false;
_mailboxDashBoardController.searchEmail();
_mailboxDashBoardController.handleAdvancedSearchEmail();
}
Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
@@ -405,17 +398,8 @@ class AdvancedFilterController extends BaseController {
);
} else if (action is ClearDateRangeToAdvancedSearch) {
_updateDateRangeTime(action.receiveTime);
} else if (action is StartSearchEmailAction) {
switch(action.filter) {
case QuickSearchFilter.from:
_updateFromField();
break;
case QuickSearchFilter.to:
_updateToField();
break;
default:
break;
}
} else if (action is StartSearchEmailBySearchFilterAction) {
_handleSearchEmailBySearchFilterAction(action.searchFilter);
} else if (action is SearchEmailByFromFieldsAction) {
searchController.clearSearchFilter();
_resetAllToOriginalValue();
@@ -480,6 +464,19 @@ class AdvancedFilterController extends BaseController {
applyAdvancedSearchFilter();
}
void _handleSearchEmailBySearchFilterAction(QuickSearchFilter searchFilter) {
switch(searchFilter) {
case QuickSearchFilter.from:
_updateFromField();
break;
case QuickSearchFilter.to:
_updateToField();
break;
default:
break;
}
}
@override
void onClose() {
_removeFocusListener();
@@ -667,20 +667,55 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE;
void searchEmail({String? queryString}) {
log('MailboxDashBoardController::searchEmail():');
void handleAdvancedSearchEmail() {
log('MailboxDashBoardController::handleAdvancedSearchEmail:');
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()) {
_closeEmailDetailedView();
}
_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() {
@@ -1675,7 +1710,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
if (newContact is 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) {
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(
mailboxOption: destinationMailbox.id == PresentationMailbox.unifiedMailbox.id
? const None()
: Some(destinationMailbox),
beforeOption: const None(),
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
? const Some(0)
: const None()
: Some(destinationMailbox)
);
dispatchAction(StartSearchEmailAction());
@@ -1745,8 +1776,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
searchController.updateFilterEmail(
emailReceiveTimeTypeOption: Some(receiveTime),
startDateOption: optionOf(startDate?.toUTCDate()),
endDateOption: optionOf(endDate?.toUTCDate()),
beforeOption: const None()
endDateOption: optionOf(endDate?.toUTCDate())
);
dispatchAction(StartSearchEmailAction());
}
@@ -1756,8 +1786,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
searchController.updateFilterEmail(
emailReceiveTimeTypeOption: Some(receiveTime),
startDateOption: const None(),
endDateOption: const None(),
beforeOption: const None()
endDateOption: const None()
);
dispatchAction(StartSearchEmailAction());
}
@@ -1767,7 +1796,6 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
log('MailboxDashBoardController::selectSortOrderQuickSearchFilter():sortOrder: $sortOrder');
popBack();
searchController.sortOrderFiltered.value = sortOrder;
searchController.updateFilterEmail(sortOrderOption: sortOrder.getSortOrder());
dispatchAction(StartSearchEmailAction());
}
@@ -1776,27 +1804,24 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
searchController.updateFilterEmail(
emailReceiveTimeTypeOption: const Some(EmailReceiveTimeType.allTime),
startDateOption: const None(),
endDateOption: const None(),
beforeOption: const None()
endDateOption: const None()
);
dispatchAction(StartSearchEmailAction());
}
void _deleteSortOrderSearchFilter() {
searchController.sortOrderFiltered.value = EmailSortOrderType.mostRecent;
searchController.updateFilterEmail(
sortOrderOption: EmailSortOrderType.mostRecent.getSortOrder());
dispatchAction(StartSearchEmailAction());
}
void _deleteFromSearchFilter() {
searchController.updateFilterEmail(fromOption: const None());
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.from));
dispatchAction(StartSearchEmailBySearchFilterAction(QuickSearchFilter.from));
}
void _deleteToSearchFilter() {
searchController.updateFilterEmail(toOption: const None());
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.to));
dispatchAction(StartSearchEmailBySearchFilterAction(QuickSearchFilter.to));
}
void _deleteHasAttachmentSearchFilter() {
@@ -1805,13 +1830,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
}
void _deleteFolderSearchFilter() {
searchController.updateFilterEmail(
mailboxOption: const None(),
beforeOption: const None(),
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
? const Some(0)
: const None()
);
searchController.updateFilterEmail(mailboxOption: const None());
dispatchAction(StartSearchEmailAction());
}
@@ -170,7 +170,6 @@ class SearchController extends BaseController with DateRangePickerMixin {
Option<UTCDate>? beforeOption,
Option<UTCDate>? startDateOption,
Option<UTCDate>? endDateOption,
Option<Set<Comparator>>? sortOrderOption,
Option<int>? positionOption,
}) {
searchEmailFilter.value = searchEmailFilter.value.copyWith(
@@ -185,7 +184,6 @@ class SearchController extends BaseController with DateRangePickerMixin {
beforeOption: beforeOption,
startDateOption: startDateOption,
endDateOption: endDateOption,
sortOrderOption: sortOrderOption,
positionOption: positionOption,
);
searchEmailFilter.refresh();
@@ -284,6 +282,15 @@ class SearchController extends BaseController with DateRangePickerMixin {
sortOrderFiltered.value = EmailSortOrderType.mostRecent;
}
void clearAllFilterSearch() {
_clearAllTextInputSimpleSearch();
clearSortOrder();
clearFilterSuggestion();
clearSearchFilter();
deactivateAdvancedSearch();
hideAdvancedSearchFormView();
}
void disableAllSearchEmail() {
_clearAllTextInputSimpleSearch();
deactivateSimpleSearch();