matches method

bool matches(
  1. MimeMessage message
)

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;
}