TF-933 Simplify advanced search request

This commit is contained in:
dab246
2022-09-16 13:31:52 +07:00
committed by Dat H. Pham
parent b04ccc6ec0
commit 17ececa2a0
3 changed files with 56 additions and 12 deletions
@@ -59,9 +59,11 @@ class SearchEmailFilter {
);
}
Filter mappingToEmailFilterCondition({Filter? moreFilterCondition}) {
Filter? mappingToEmailFilterCondition({EmailFilterCondition? moreFilterCondition}) {
final emailEmailFilterConditionShared = EmailFilterCondition(
text: text?.value,
text: text?.value.trim().isNotEmpty == true
? text?.value
: null,
inMailbox: mailbox == PresentationMailbox.unifiedMailbox
? null
: mailbox?.id,
@@ -70,16 +72,29 @@ class SearchEmailFilter {
subject: subject,
before: before,
);
return LogicFilterOperator(Operator.AND, {
emailEmailFilterConditionShared,
LogicFilterOperator(
Operator.AND, to.map((e) => EmailFilterCondition(to: e)).toSet()),
LogicFilterOperator(
Operator.AND, from.map((e) => EmailFilterCondition(from: e)).toSet()),
LogicFilterOperator(
Operator.AND, notKeyword.map((e) => EmailFilterCondition(notKeyword: e)).toSet()),
if(moreFilterCondition !=null) moreFilterCondition
});
final listEmailCondition = {
if (emailEmailFilterConditionShared.hasCondition)
emailEmailFilterConditionShared,
if (to.isNotEmpty)
LogicFilterOperator(
Operator.AND,
to.map((e) => EmailFilterCondition(to: e)).toSet()),
if (from.isNotEmpty)
LogicFilterOperator(
Operator.AND,
from.map((e) => EmailFilterCondition(from: e)).toSet()),
if (notKeyword.isNotEmpty)
LogicFilterOperator(
Operator.AND,
notKeyword.map((e) => EmailFilterCondition(notKeyword: e)).toSet()),
if (moreFilterCondition != null && moreFilterCondition.hasCondition)
moreFilterCondition
};
return listEmailCondition.isNotEmpty
? LogicFilterOperator(Operator.AND, listEmailCondition)
: null;
}
}
@@ -0,0 +1,28 @@
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
extension EmailFilterConditionExtension on EmailFilterCondition {
bool get hasCondition {
return inMailbox != null ||
inMailboxOtherThan?.isNotEmpty == true ||
before != null ||
after != null ||
minSize != null ||
maxSize != null ||
allInThreadHaveKeyword?.isNotEmpty == true ||
someInThreadHaveKeyword?.isNotEmpty == true ||
noneInThreadHaveKeyword?.isNotEmpty == true ||
hasKeyword?.isNotEmpty == true ||
notKeyword?.isNotEmpty == true ||
hasAttachment != null ||
text?.isNotEmpty == true ||
from?.isNotEmpty == true ||
to?.isNotEmpty == true ||
cc?.isNotEmpty == true ||
bcc?.isNotEmpty == true ||
subject?.isNotEmpty == true ||
body?.isNotEmpty == true ||
header?.isNotEmpty == true;
}
}
+1
View File
@@ -51,6 +51,7 @@ export 'extensions/properties_extension.dart';
export 'extensions/session_extension.dart';
export 'extensions/user_profile_extension.dart';
export 'extensions/utc_date_extension.dart';
export 'extensions/email_filter_condition_extension.dart';
// Identity
export 'identity/identity_request_dto.dart';
export 'mailbox/expand_mode.dart';