add search filter muti has_key_word and not_key_word
This commit is contained in:
+9
-7
@@ -56,13 +56,15 @@ class AdvancedFilterController extends BaseController {
|
|||||||
if (toFilterInputController.text.isNotEmpty) {
|
if (toFilterInputController.text.isNotEmpty) {
|
||||||
_searchController.updateFilterEmail(to: toFilterInputController.text.split(',').toSet());
|
_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(
|
_searchController.updateFilterEmail(
|
||||||
subject: StringConvert.writeEmptyToNull(subjectFilterInputController.text),
|
subject: StringConvert.writeEmptyToNull(subjectFilterInputController.text),
|
||||||
hasKeyword: Wrapped.value(
|
|
||||||
StringConvert.writeEmptyToNull(hasKeyWordFilterInputController.text)),
|
|
||||||
notKeyword: Wrapped.value(
|
|
||||||
StringConvert.writeEmptyToNull(notKeyWordFilterInputController.text)),
|
|
||||||
emailReceiveTimeType: dateFilterSelectedFormAdvancedSearch.value,
|
emailReceiveTimeType: dateFilterSelectedFormAdvancedSearch.value,
|
||||||
hasAttachment: hasAttachment.value,
|
hasAttachment: hasAttachment.value,
|
||||||
);
|
);
|
||||||
@@ -96,11 +98,11 @@ class AdvancedFilterController extends BaseController {
|
|||||||
|
|
||||||
initSearchFilterField(BuildContext context) {
|
initSearchFilterField(BuildContext context) {
|
||||||
_searchController.updateFilterEmail(mailbox: _mailboxDashBoardController.selectedMailbox.value);
|
_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);
|
toFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.to.firstOrNull);
|
||||||
subjectFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.subject);
|
subjectFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.subject);
|
||||||
hasKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.hasKeyword);
|
hasKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.hasKeyword.firstOrNull);
|
||||||
notKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.notKeyword);
|
notKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.notKeyword.firstOrNull);
|
||||||
dateFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.emailReceiveTimeType.getTitle(context));
|
dateFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.emailReceiveTimeType.getTitle(context));
|
||||||
mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.mailbox?.name?.name);
|
mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.mailbox?.name?.name);
|
||||||
dateFilterSelectedFormAdvancedSearch.value = _searchEmailFilter.emailReceiveTimeType;
|
dateFilterSelectedFormAdvancedSearch.value = _searchEmailFilter.emailReceiveTimeType;
|
||||||
|
|||||||
@@ -122,8 +122,8 @@ class SearchController extends BaseController {
|
|||||||
Set<String>? to,
|
Set<String>? to,
|
||||||
SearchQuery? text,
|
SearchQuery? text,
|
||||||
String? subject,
|
String? subject,
|
||||||
Wrapped<String?>? hasKeyword,
|
Set<String>? hasKeyword,
|
||||||
Wrapped<String?>? notKeyword,
|
Set<String>? notKeyword,
|
||||||
PresentationMailbox? mailbox,
|
PresentationMailbox? mailbox,
|
||||||
EmailReceiveTimeType? emailReceiveTimeType,
|
EmailReceiveTimeType? emailReceiveTimeType,
|
||||||
bool? hasAttachment,
|
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.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter_operator.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';
|
import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart';
|
||||||
@@ -12,8 +11,8 @@ class SearchEmailFilter {
|
|||||||
final Set<String> to;
|
final Set<String> to;
|
||||||
final SearchQuery? text;
|
final SearchQuery? text;
|
||||||
final String? subject;
|
final String? subject;
|
||||||
final String? hasKeyword;
|
final Set<String> hasKeyword;
|
||||||
final String? notKeyword;
|
final Set<String> notKeyword;
|
||||||
final PresentationMailbox? mailbox;
|
final PresentationMailbox? mailbox;
|
||||||
final EmailReceiveTimeType emailReceiveTimeType;
|
final EmailReceiveTimeType emailReceiveTimeType;
|
||||||
final bool hasAttachment;
|
final bool hasAttachment;
|
||||||
@@ -25,11 +24,13 @@ class SearchEmailFilter {
|
|||||||
bool? hasAttachment,
|
bool? hasAttachment,
|
||||||
this.text,
|
this.text,
|
||||||
this.subject,
|
this.subject,
|
||||||
this.hasKeyword,
|
Set<String>? hasKeyword,
|
||||||
this.notKeyword,
|
Set<String>? notKeyword,
|
||||||
this.mailbox,
|
this.mailbox,
|
||||||
}) : from = from ?? <String>{},
|
}) : from = from ?? <String>{},
|
||||||
to = to ?? <String>{},
|
to = to ?? <String>{},
|
||||||
|
hasKeyword = hasKeyword ?? <String>{},
|
||||||
|
notKeyword = notKeyword ?? <String>{},
|
||||||
hasAttachment = hasAttachment ?? false,
|
hasAttachment = hasAttachment ?? false,
|
||||||
emailReceiveTimeType =
|
emailReceiveTimeType =
|
||||||
emailReceiveTimeType ?? EmailReceiveTimeType.allTime;
|
emailReceiveTimeType ?? EmailReceiveTimeType.allTime;
|
||||||
@@ -39,8 +40,8 @@ class SearchEmailFilter {
|
|||||||
Set<String>? to,
|
Set<String>? to,
|
||||||
SearchQuery? text,
|
SearchQuery? text,
|
||||||
String? subject,
|
String? subject,
|
||||||
Wrapped<String?>? hasKeyword,
|
Set<String>? hasKeyword,
|
||||||
Wrapped<String?>? notKeyword,
|
Set<String>? notKeyword,
|
||||||
PresentationMailbox? mailbox,
|
PresentationMailbox? mailbox,
|
||||||
EmailReceiveTimeType? emailReceiveTimeType,
|
EmailReceiveTimeType? emailReceiveTimeType,
|
||||||
bool? hasAttachment,
|
bool? hasAttachment,
|
||||||
@@ -50,8 +51,8 @@ class SearchEmailFilter {
|
|||||||
to: to ?? this.to,
|
to: to ?? this.to,
|
||||||
text: text ?? this.text,
|
text: text ?? this.text,
|
||||||
subject: subject ?? this.subject,
|
subject: subject ?? this.subject,
|
||||||
hasKeyword: hasKeyword != null ? hasKeyword.value : this.hasKeyword,
|
hasKeyword: hasKeyword ?? this.hasKeyword,
|
||||||
notKeyword: notKeyword !=null ? notKeyword.value : this.notKeyword,
|
notKeyword: notKeyword ?? this.notKeyword,
|
||||||
mailbox: mailbox ?? this.mailbox,
|
mailbox: mailbox ?? this.mailbox,
|
||||||
emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType,
|
emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType,
|
||||||
hasAttachment: hasAttachment ?? this.hasAttachment,
|
hasAttachment: hasAttachment ?? this.hasAttachment,
|
||||||
@@ -63,8 +64,6 @@ class SearchEmailFilter {
|
|||||||
text: text?.value,
|
text: text?.value,
|
||||||
inMailbox: mailbox?.id,
|
inMailbox: mailbox?.id,
|
||||||
after: emailReceiveTimeType.toUTCDate(),
|
after: emailReceiveTimeType.toUTCDate(),
|
||||||
hasKeyword: hasKeyword,
|
|
||||||
notKeyword: notKeyword,
|
|
||||||
hasAttachment: hasAttachment == false ? null : hasAttachment,
|
hasAttachment: hasAttachment == false ? null : hasAttachment,
|
||||||
subject: subject,
|
subject: subject,
|
||||||
);
|
);
|
||||||
@@ -74,6 +73,10 @@ class SearchEmailFilter {
|
|||||||
Operator.AND, to.map((e) => EmailFilterCondition(to: e)).toSet()),
|
Operator.AND, to.map((e) => EmailFilterCondition(to: e)).toSet()),
|
||||||
LogicFilterOperator(
|
LogicFilterOperator(
|
||||||
Operator.AND, from.map((e) => EmailFilterCondition(from: e)).toSet()),
|
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()),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user