TF-3002 [MOBILE] Handle select & delete Starred search filters in search view

This commit is contained in:
dab246
2024-09-13 14:50:17 +07:00
committed by Dat H. Pham
parent 5ffe1ab13f
commit 9b8b2fe560
2 changed files with 35 additions and 1 deletions
@@ -14,6 +14,7 @@ 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/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
import 'package:model/email/email_action_type.dart';
import 'package:model/email/mark_star_action.dart';
import 'package:model/email/prefix_email_address.dart';
@@ -135,6 +136,8 @@ class SearchEmailController extends BaseController
Set<String> get listAddressOfFromFiltered => searchEmailFilter.value.from;
Set<String> get listHasKeywordFiltered => searchEmailFilter.value.hasKeyword;
SearchEmailController(
this._quickSearchEmailInteractor,
this._saveRecentSearchInteractor,
@@ -511,6 +514,21 @@ class SearchEmailController extends BaseController
_searchEmailAction(context);
}
void selectStarredSearchFilter(BuildContext context) {
final listKeyword = listHasKeywordFiltered;
if (!listKeyword.contains(KeyWordIdentifier.emailFlagged.value)) {
listKeyword.add(KeyWordIdentifier.emailFlagged.value);
}
_updateSimpleSearchFilter(
hasKeywordOption: Some(listKeyword),
beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition()
? const Some(0)
: const None()
);
_searchEmailAction(context);
}
bool checkQuickSearchFilterSelected(QuickSearchFilter filter) {
switch (filter) {
case QuickSearchFilter.hasAttachment:
@@ -702,6 +720,7 @@ class SearchEmailController extends BaseController
Option<UTCDate>? endDateOption,
Option<Set<Comparator>>? sortOrderOption,
Option<int>? positionOption,
Option<Set<String>>? hasKeywordOption,
}) {
searchEmailFilter.value = searchEmailFilter.value.copyWith(
fromOption: fromOption,
@@ -715,6 +734,7 @@ class SearchEmailController extends BaseController
endDateOption: endDateOption,
sortOrderOption: sortOrderOption,
positionOption: positionOption,
hasKeywordOption: hasKeywordOption,
);
searchEmailFilter.refresh();
}
@@ -934,7 +954,7 @@ class SearchEmailController extends BaseController
_deleteFolderSearchFilter(context);
break;
case QuickSearchFilter.starred:
_deleteFolderSearchFilter(context);
_deleteStarredSearchFilter(context);
break;
default:
break;
@@ -1014,6 +1034,17 @@ class SearchEmailController extends BaseController
_searchEmailAction(context);
}
void _deleteStarredSearchFilter(BuildContext context) {
_updateSimpleSearchFilter(
hasKeywordOption: const None(),
beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition()
? const Some(0)
: const None()
);
_searchEmailAction(context);
}
@override
void onClose() {
textInputSearchFocus.removeListener(_onSearchTextInputListener);
@@ -291,6 +291,9 @@ class SearchEmailView extends GetWidget<SearchEmailController>
context,
controller.mailboxFiltered);
break;
case QuickSearchFilter.starred:
controller.selectStarredSearchFilter(context);
break;
default:
break;
}