TF-2323 Implement from criterion with selection and follow search recommendation

(cherry picked from commit 23817c87d602c370fc9a0ea5fc86e660d61b7f07)
This commit is contained in:
hieubt
2023-11-26 13:51:38 +07:00
committed by Dat H. Pham
parent 7ac76486ed
commit d4f72b7d81
4 changed files with 64 additions and 30 deletions
@@ -10,6 +10,7 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart';
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/email_comparator.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
@@ -70,7 +71,11 @@ class SearchController extends BaseController with DateRangePickerMixin {
searchEmailFilter.value = SearchEmailFilter.initial();
}
void selectQuickSearchFilter(QuickSearchFilter quickSearchFilter, UserProfile userProfile) {
void selectQuickSearchFilter(
QuickSearchFilter quickSearchFilter,
UserProfile userProfile,
{EmailAddress? fromEmailFilter}
) {
final isFilterSelected = quickSearchFilter.isSelected(searchEmailFilter.value, userProfile);
switch (quickSearchFilter) {
@@ -81,8 +86,12 @@ class SearchController extends BaseController with DateRangePickerMixin {
updateFilterEmail(emailReceiveTimeType: EmailReceiveTimeType.allTime);
return;
case QuickSearchFilter.fromMe:
final newListEmailAddress = isFilterSelected ? <String>{} : <String>{userProfile.email};
updateFilterEmail(fromOption: Some(newListEmailAddress));
if (fromEmailFilter != null) {
final newListEmailAddress = (fromEmailFilter.email != null && fromEmailFilter.email!.isNotEmpty)
? <String>{fromEmailFilter.email!}
: <String>{};
updateFilterEmail(fromOption: Some(newListEmailAddress));
}
return;
case QuickSearchFilter.sortBy:
return;