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 cdc91934b..eadf7f6f6 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -1800,7 +1800,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo } void _deleteHasAttachmentSearchFilter() { - searchController.updateFilterEmail(hasAttachmentOption: const Some(false)); + searchController.updateFilterEmail(hasAttachmentOption: const None()); dispatchAction(StartSearchEmailAction()); } diff --git a/lib/features/search/email/presentation/search_email_controller.dart b/lib/features/search/email/presentation/search_email_controller.dart index 1f647f7b5..345fa1fa3 100644 --- a/lib/features/search/email/presentation/search_email_controller.dart +++ b/lib/features/search/email/presentation/search_email_controller.dart @@ -910,6 +910,110 @@ class SearchEmailController extends BaseController } } + void onDeleteSearchFilterAction( + BuildContext context, + QuickSearchFilter searchFilter + ) { + switch(searchFilter) { + case QuickSearchFilter.dateTime: + _deleteDateTimeSearchFilter(context); + break; + case QuickSearchFilter.sortBy: + _deleteSortOrderSearchFilter(context); + break; + case QuickSearchFilter.from: + _deleteFromSearchFilter(context); + break; + case QuickSearchFilter.hasAttachment: + _deleteHasAttachmentSearchFilter(context); + break; + case QuickSearchFilter.to: + _deleteToSearchFilter(context); + break; + case QuickSearchFilter.folder: + _deleteFolderSearchFilter(context); + break; + case QuickSearchFilter.starred: + _deleteFolderSearchFilter(context); + break; + default: + break; + } + } + + void _deleteDateTimeSearchFilter(BuildContext context) { + _updateSimpleSearchFilter( + emailReceiveTimeTypeOption: const Some(EmailReceiveTimeType.allTime), + textOption: searchQuery == null + ? Some(SearchQuery.initial()) + : optionOf(searchEmailFilter.value.text), + beforeOption: const None(), + startDateOption: const None(), + endDateOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + _setEmailReceiveTimeType(EmailReceiveTimeType.allTime); + _searchEmailAction(context); + } + + void _deleteSortOrderSearchFilter(BuildContext context) { + _updateSimpleSearchFilter( + sortOrderOption: EmailSortOrderType.mostRecent.getSortOrder(), + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + emailSortOrderType.value = EmailSortOrderType.mostRecent; + _searchEmailAction(context); + } + + void _deleteFromSearchFilter(BuildContext context) { + _updateSimpleSearchFilter( + fromOption: const None(), + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + _searchEmailAction(context); + } + + void _deleteToSearchFilter(BuildContext context) { + _updateSimpleSearchFilter( + toOption: const None(), + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + _searchEmailAction(context); + } + + void _deleteHasAttachmentSearchFilter(BuildContext context) { + _updateSimpleSearchFilter( + hasAttachmentOption: const None(), + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + _searchEmailAction(context); + } + + void _deleteFolderSearchFilter(BuildContext context) { + _updateSimpleSearchFilter( + mailboxOption: const None(), + beforeOption: const None(), + positionOption: emailSortOrderType.value.isScrollByPosition() + ? const Some(0) + : const None() + ); + _searchEmailAction(context); + } + @override void onClose() { textInputSearchFocus.removeListener(_onSearchTextInputListener); diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index d519dcf26..d38fe5d51 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -247,6 +247,8 @@ class SearchEmailView extends GetWidget mailbox: mailbox, backgroundColor: searchFilter.getMobileBackgroundColor(isSelected: isSelected), onSelectSearchFilterAction: _onSelectSearchFilterAction, + onDeleteSearchFilterAction: (searchFilter) => + controller.onDeleteSearchFilterAction(context, searchFilter), ); }); }