diff --git a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java index 69a8c18281..bf172e778c 100644 --- a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java +++ b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java @@ -884,6 +884,8 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback or = new ArrayList<>(); List and = new ArrayList<>(); @@ -904,6 +906,7 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback plus = new ArrayList<>(); List minus = new ArrayList<>(); List opt = new ArrayList<>(); + List from = new ArrayList<>(); StringBuilder all = new StringBuilder(); for (String w : search.trim().split("\\s+")) { if (all.length() > 0) @@ -918,13 +921,15 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback 1 && w.startsWith("?")) { opt.add(w.substring(1)); all.append(w.substring(1)); + } else if (w.length() > FROM.length() && w.startsWith(FROM)) { + from.add(w.substring(FROM.length())); } else { word.add(w); all.append(w); } } - if (plus.size() + minus.size() + opt.size() > 0) + if (plus.size() + minus.size() + opt.size() + from.size() > 0) search = all.toString(); // Yahoo! does not support keyword search, but uses the flags $Forwarded $Junk $NotJunk @@ -935,8 +940,14 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback 0) { + for (String term : from) + and.add(new FromStringTerm(term)); + } else { + if (in_senders) + or.add(new FromStringTerm(search)); + } + if (in_recipients) { or.add(new RecipientStringTerm(Message.RecipientType.TO, search)); or.add(new RecipientStringTerm(Message.RecipientType.CC, search));