TF-3002 [WEB] Add delete button in search filters

This commit is contained in:
dab246
2024-09-12 21:31:44 +07:00
committed by Dat H. Pham
parent 8290025c14
commit e6eeabedee
9 changed files with 175 additions and 54 deletions
@@ -446,13 +446,21 @@ class AdvancedFilterController extends BaseController {
}
void _updateFromField() {
listFromEmailAddress = List.from(
searchEmailFilter.from.map((address) => EmailAddress(null, address)));
if (searchEmailFilter.from.isNotEmpty) {
listFromEmailAddress = List.from(
searchEmailFilter.from.map((address) => EmailAddress(null, address)));
} else {
listFromEmailAddress.clear();
}
}
void _updateToField() {
listToEmailAddress= List.from(
searchEmailFilter.to.map((address) => EmailAddress(null, address)));
if (searchEmailFilter.to.isNotEmpty) {
listToEmailAddress = List.from(
searchEmailFilter.to.map((address) => EmailAddress(null, address)));
} else {
listToEmailAddress.clear();
}
}
void onSearchAction(BuildContext context) {
@@ -1579,10 +1579,6 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
_getAllIdentities();
}
void addFilterToSuggestionForm(QuickSearchFilter filter) {
searchController.addFilterToSuggestionForm(filter);
}
Future<List<PresentationEmail>> quickSearchEmails(String query) async {
if (sessionCurrent != null && accountId.value != null) {
return searchController.quickSearchEmails(
@@ -1733,7 +1729,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
: const None()
);
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.folder));
dispatchAction(StartSearchEmailAction());
}
}
@@ -1777,6 +1773,75 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
dispatchAction(StartSearchEmailAction());
}
void _deleteDateTimeSearchFilter() {
dispatchAction(ClearDateRangeToAdvancedSearch(EmailReceiveTimeType.allTime));
searchController.updateFilterEmail(
emailReceiveTimeType: EmailReceiveTimeType.allTime,
startDateOption: const None(),
endDateOption: const None(),
beforeOption: 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));
}
void _deleteToSearchFilter() {
searchController.updateFilterEmail(toOption: const None());
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.to));
}
void _deleteHasAttachmentSearchFilter() {
searchController.updateFilterEmail(hasAttachment: false);
dispatchAction(StartSearchEmailAction());
}
void _deleteFolderSearchFilter() {
searchController.updateFilterEmail(
mailboxOption: const None(),
beforeOption: const None(),
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
? const Some(0)
: const None()
);
dispatchAction(StartSearchEmailAction());
}
void onDeleteSearchFilterAction(QuickSearchFilter searchFilter) {
switch(searchFilter) {
case QuickSearchFilter.dateTime:
_deleteDateTimeSearchFilter();
break;
case QuickSearchFilter.sortBy:
_deleteSortOrderSearchFilter();
break;
case QuickSearchFilter.from:
_deleteFromSearchFilter();
break;
case QuickSearchFilter.hasAttachment:
_deleteHasAttachmentSearchFilter();
break;
case QuickSearchFilter.to:
_deleteToSearchFilter();
break;
case QuickSearchFilter.folder:
_deleteFolderSearchFilter();
break;
default:
break;
}
}
bool isEmptyTrashBannerEnabledOnWeb(
BuildContext context,
PresentationMailbox? mailbox
@@ -70,14 +70,16 @@ class SearchController extends BaseController with DateRangePickerMixin {
searchEmailFilter.value = SearchEmailFilter.initial();
}
void addFilterToSuggestionForm(QuickSearchFilter filter) {
if (listFilterOnSuggestionForm.contains(filter)) {
listFilterOnSuggestionForm.remove(filter);
} else {
listFilterOnSuggestionForm.add(filter);
void addQuickSearchFilterToSuggestionSearchView(QuickSearchFilter searchFilter) {
if (!listFilterOnSuggestionForm.contains(searchFilter)) {
listFilterOnSuggestionForm.add(searchFilter);
}
}
void deleteQuickSearchFilterFromSuggestionSearchView(QuickSearchFilter searchFilter) {
listFilterOnSuggestionForm.remove(searchFilter);
}
Future<List<PresentationEmail>> quickSearchEmails({
required Session session,
required AccountId accountId,