add search filter muti has_key_word and not_key_word

This commit is contained in:
ManhNTX
2022-06-27 01:48:53 +07:00
committed by Dat H. Pham
parent 1c26fd5ec1
commit 9ea8fc1cb8
3 changed files with 25 additions and 20 deletions
@@ -56,13 +56,15 @@ class AdvancedFilterController extends BaseController {
if (toFilterInputController.text.isNotEmpty) {
_searchController.updateFilterEmail(to: toFilterInputController.text.split(',').toSet());
}
if (hasKeyWordFilterInputController.text.isNotEmpty) {
_searchController.updateFilterEmail(hasKeyword: hasKeyWordFilterInputController.text.split(',').toSet());
}
if (notKeyWordFilterInputController.text.isNotEmpty) {
_searchController.updateFilterEmail(notKeyword: notKeyWordFilterInputController.text.split(',').toSet());
}
_searchController.updateFilterEmail(
subject: StringConvert.writeEmptyToNull(subjectFilterInputController.text),
hasKeyword: Wrapped.value(
StringConvert.writeEmptyToNull(hasKeyWordFilterInputController.text)),
notKeyword: Wrapped.value(
StringConvert.writeEmptyToNull(notKeyWordFilterInputController.text)),
emailReceiveTimeType: dateFilterSelectedFormAdvancedSearch.value,
hasAttachment: hasAttachment.value,
);
@@ -96,11 +98,11 @@ class AdvancedFilterController extends BaseController {
initSearchFilterField(BuildContext context) {
_searchController.updateFilterEmail(mailbox: _mailboxDashBoardController.selectedMailbox.value);
fromFilterInputController.text = StringConvert.writeNullToEmpty(_searchController.searchEmailFilter.value.from.firstOrNull);
fromFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.from.firstOrNull);
toFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.to.firstOrNull);
subjectFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.subject);
hasKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.hasKeyword);
notKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.notKeyword);
hasKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.hasKeyword.firstOrNull);
notKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.notKeyword.firstOrNull);
dateFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.emailReceiveTimeType.getTitle(context));
mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.mailbox?.name?.name);
dateFilterSelectedFormAdvancedSearch.value = _searchEmailFilter.emailReceiveTimeType;
@@ -122,8 +122,8 @@ class SearchController extends BaseController {
Set<String>? to,
SearchQuery? text,
String? subject,
Wrapped<String?>? hasKeyword,
Wrapped<String?>? notKeyword,
Set<String>? hasKeyword,
Set<String>? notKeyword,
PresentationMailbox? mailbox,
EmailReceiveTimeType? emailReceiveTimeType,
bool? hasAttachment,
@@ -1,4 +1,3 @@
import 'package:core/core.dart';
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart';
import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart';
@@ -12,8 +11,8 @@ class SearchEmailFilter {
final Set<String> to;
final SearchQuery? text;
final String? subject;
final String? hasKeyword;
final String? notKeyword;
final Set<String> hasKeyword;
final Set<String> notKeyword;
final PresentationMailbox? mailbox;
final EmailReceiveTimeType emailReceiveTimeType;
final bool hasAttachment;
@@ -25,11 +24,13 @@ class SearchEmailFilter {
bool? hasAttachment,
this.text,
this.subject,
this.hasKeyword,
this.notKeyword,
Set<String>? hasKeyword,
Set<String>? notKeyword,
this.mailbox,
}) : from = from ?? <String>{},
to = to ?? <String>{},
hasKeyword = hasKeyword ?? <String>{},
notKeyword = notKeyword ?? <String>{},
hasAttachment = hasAttachment ?? false,
emailReceiveTimeType =
emailReceiveTimeType ?? EmailReceiveTimeType.allTime;
@@ -39,8 +40,8 @@ class SearchEmailFilter {
Set<String>? to,
SearchQuery? text,
String? subject,
Wrapped<String?>? hasKeyword,
Wrapped<String?>? notKeyword,
Set<String>? hasKeyword,
Set<String>? notKeyword,
PresentationMailbox? mailbox,
EmailReceiveTimeType? emailReceiveTimeType,
bool? hasAttachment,
@@ -50,8 +51,8 @@ class SearchEmailFilter {
to: to ?? this.to,
text: text ?? this.text,
subject: subject ?? this.subject,
hasKeyword: hasKeyword != null ? hasKeyword.value : this.hasKeyword,
notKeyword: notKeyword !=null ? notKeyword.value : this.notKeyword,
hasKeyword: hasKeyword ?? this.hasKeyword,
notKeyword: notKeyword ?? this.notKeyword,
mailbox: mailbox ?? this.mailbox,
emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType,
hasAttachment: hasAttachment ?? this.hasAttachment,
@@ -63,8 +64,6 @@ class SearchEmailFilter {
text: text?.value,
inMailbox: mailbox?.id,
after: emailReceiveTimeType.toUTCDate(),
hasKeyword: hasKeyword,
notKeyword: notKeyword,
hasAttachment: hasAttachment == false ? null : hasAttachment,
subject: subject,
);
@@ -74,6 +73,10 @@ class SearchEmailFilter {
Operator.AND, to.map((e) => EmailFilterCondition(to: e)).toSet()),
LogicFilterOperator(
Operator.AND, from.map((e) => EmailFilterCondition(from: e)).toSet()),
LogicFilterOperator(
Operator.AND, hasKeyword.map((e) => EmailFilterCondition(hasKeyword: e)).toSet()),
LogicFilterOperator(
Operator.AND, notKeyword.map((e) => EmailFilterCondition(notKeyword: e)).toSet()),
});
}
}