matches method
Checks a new incoming message
if it matches this query
Implementation
bool matches(MimeMessage message) {
var matchesQuery = query.isEmpty;
if (!matchesQuery) {
// the query is not empty
final queryText = query.toLowerCase();
switch (queryType) {
case SearchQueryType.subject:
matchesQuery = _matchesSubject(queryText, message);
break;
case SearchQueryType.from:
matchesQuery = _matchesFrom(queryText, message);
break;
case SearchQueryType.to:
matchesQuery = _matchesTo(queryText, message);
break;
case SearchQueryType.body:
matchesQuery =
_textContains(queryText, message.decodeTextPlainPart());
break;
case SearchQueryType.allTextHeaders:
matchesQuery = _matchesSubject(queryText, message) ||
_matchesFrom(queryText, message) ||
_matchesTo(queryText, message);
break;
case SearchQueryType.fromOrSubject:
matchesQuery = _matchesSubject(queryText, message) ||
_matchesFrom(queryText, message);
break;
case SearchQueryType.toOrSubject:
matchesQuery = _matchesSubject(queryText, message) ||
_matchesTo(queryText, message);
break;
case SearchQueryType.fromOrTo:
matchesQuery = _matchesFrom(queryText, message) ||
_matchesTo(queryText, message);
break;
}
if (!matchesQuery) {
return false;
}
}
if (before != null) {
final date = message.decodeDate() ?? DateTime.now();
if (date.isAfter(before!)) {
return false;
}
}
return true;
}