TF-933 Simplify advanced search request
This commit is contained in:
@@ -59,9 +59,11 @@ class SearchEmailFilter {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Filter mappingToEmailFilterCondition({Filter? moreFilterCondition}) {
|
Filter? mappingToEmailFilterCondition({EmailFilterCondition? moreFilterCondition}) {
|
||||||
final emailEmailFilterConditionShared = EmailFilterCondition(
|
final emailEmailFilterConditionShared = EmailFilterCondition(
|
||||||
text: text?.value,
|
text: text?.value.trim().isNotEmpty == true
|
||||||
|
? text?.value
|
||||||
|
: null,
|
||||||
inMailbox: mailbox == PresentationMailbox.unifiedMailbox
|
inMailbox: mailbox == PresentationMailbox.unifiedMailbox
|
||||||
? null
|
? null
|
||||||
: mailbox?.id,
|
: mailbox?.id,
|
||||||
@@ -70,16 +72,29 @@ class SearchEmailFilter {
|
|||||||
subject: subject,
|
subject: subject,
|
||||||
before: before,
|
before: before,
|
||||||
);
|
);
|
||||||
return LogicFilterOperator(Operator.AND, {
|
|
||||||
emailEmailFilterConditionShared,
|
final listEmailCondition = {
|
||||||
LogicFilterOperator(
|
if (emailEmailFilterConditionShared.hasCondition)
|
||||||
Operator.AND, to.map((e) => EmailFilterCondition(to: e)).toSet()),
|
emailEmailFilterConditionShared,
|
||||||
LogicFilterOperator(
|
if (to.isNotEmpty)
|
||||||
Operator.AND, from.map((e) => EmailFilterCondition(from: e)).toSet()),
|
LogicFilterOperator(
|
||||||
LogicFilterOperator(
|
Operator.AND,
|
||||||
Operator.AND, notKeyword.map((e) => EmailFilterCondition(notKeyword: e)).toSet()),
|
to.map((e) => EmailFilterCondition(to: e)).toSet()),
|
||||||
if(moreFilterCondition !=null) moreFilterCondition
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -51,6 +51,7 @@ export 'extensions/properties_extension.dart';
|
|||||||
export 'extensions/session_extension.dart';
|
export 'extensions/session_extension.dart';
|
||||||
export 'extensions/user_profile_extension.dart';
|
export 'extensions/user_profile_extension.dart';
|
||||||
export 'extensions/utc_date_extension.dart';
|
export 'extensions/utc_date_extension.dart';
|
||||||
|
export 'extensions/email_filter_condition_extension.dart';
|
||||||
// Identity
|
// Identity
|
||||||
export 'identity/identity_request_dto.dart';
|
export 'identity/identity_request_dto.dart';
|
||||||
export 'mailbox/expand_mode.dart';
|
export 'mailbox/expand_mode.dart';
|
||||||
|
|||||||
Reference in New Issue
Block a user