From 500a7e6a798e505bb6894412d4ed0281a45196ee Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 14 Oct 2025 15:44:52 +0700 Subject: [PATCH] TF-4066 Add `unread` filter in mobile search --- .../presentation/search_email_controller.dart | 19 +++++++++++++++++-- .../email/presentation/search_email_view.dart | 5 +++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/features/search/email/presentation/search_email_controller.dart b/lib/features/search/email/presentation/search_email_controller.dart index af9bdaa30..09826f5a0 100644 --- a/lib/features/search/email/presentation/search_email_controller.dart +++ b/lib/features/search/email/presentation/search_email_controller.dart @@ -171,7 +171,6 @@ class SearchEmailController extends BaseController @override void handleSuccessViewState(Success success) { - super.handleSuccessViewState(success); if (success is SearchEmailSuccess) { _searchEmailsSuccess(success); } else if (success is SearchingMoreState) { @@ -180,16 +179,19 @@ class SearchEmailController extends BaseController _searchMoreEmailsSuccess(success); } else if (success is SearchingState) { resultSearchViewState.value = Right(success); + } else { + super.handleSuccessViewState(success); } } @override void handleFailureViewState(Failure failure) { - super.handleFailureViewState(failure); if (failure is SearchEmailFailure) { _searchEmailsFailure(failure); } else if (failure is SearchMoreEmailFailure) { _searchMoreEmailsFailure(failure); + } else { + super.handleFailureViewState(failure); } } @@ -627,6 +629,11 @@ class SearchEmailController extends BaseController _searchEmailAction(context); } + void selectUnreadSearchFilter(BuildContext context) { + _updateSimpleSearchFilter(unreadOption: const Some(true)); + _searchEmailAction(context); + } + bool checkQuickSearchFilterSelected(QuickSearchFilter filter) { switch (filter) { case QuickSearchFilter.hasAttachment: @@ -1014,6 +1021,9 @@ class SearchEmailController extends BaseController case QuickSearchFilter.starred: _deleteStarredSearchFilter(context); break; + case QuickSearchFilter.unread: + _deleteUnreadSearchFilter(context); + break; default: break; } @@ -1065,6 +1075,11 @@ class SearchEmailController extends BaseController _searchEmailAction(context); } + void _deleteUnreadSearchFilter(BuildContext context) { + _updateSimpleSearchFilter(unreadOption: const None()); + _searchEmailAction(context); + } + void clearAllSearchFilterApplied(BuildContext context) { textInputSearchController.clear(); currentSearchText.value = ''; diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index 37fb6d9c2..3bbbdeff1 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -271,6 +271,8 @@ class SearchEmailView extends GetWidget SearchEmailViewStyle.searchFilterSizeBoxMargin, _buildSearchFilterButton(context, QuickSearchFilter.starred), SearchEmailViewStyle.searchFilterSizeBoxMargin, + _buildSearchFilterButton(context, QuickSearchFilter.unread), + SearchEmailViewStyle.searchFilterSizeBoxMargin, _buildSearchFilterButton(context, QuickSearchFilter.sortBy), ], ), @@ -382,6 +384,9 @@ class SearchEmailView extends GetWidget case QuickSearchFilter.starred: controller.selectStarredSearchFilter(context); break; + case QuickSearchFilter.unread: + controller.selectUnreadSearchFilter(context); + break; default: break; }