From 171d734c839b72cebf7d1bdb8c16aab8f6f128d5 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 24 Dec 2021 11:58:37 +0100 Subject: [PATCH] Collect re:s for count --- .../java/eu/faircode/email/EntityMessage.java | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityMessage.java b/app/src/main/java/eu/faircode/email/EntityMessage.java index 444b50593e..a53709f6da 100644 --- a/app/src/main/java/eu/faircode/email/EntityMessage.java +++ b/app/src/main/java/eu/faircode/email/EntityMessage.java @@ -321,25 +321,42 @@ public class EntityMessage implements Serializable { } static int getReplies(Context context, String language, String subject) { - boolean found = false; + int count = 0; + List res = new ArrayList<>(); res.addAll(Arrays.asList(Helper.getStrings(context, language, R.string.title_subject_reply, ""))); res.addAll(Arrays.asList(Helper.getStrings(context, language, R.string.title_subject_reply_alt, ""))); - for (String re : res) { - Matcher m = getPattern(re.trim()).matcher(subject); - if (m.matches()) { - found = true; - if (re.trim().endsWith(":")) - try { - String n = m.group(2); - if (n != null) - return Integer.parseInt(n.substring(1, n.length() - 1)); - } catch (NumberFormatException ex) { - Log.e(ex); - } + + subject = subject.trim(); + while (true) { + boolean found = false; + for (String re : res) { + Matcher m = getPattern(re.trim()).matcher(subject); + if (m.matches()) { + found = true; + subject = m.group(m.groupCount()).trim(); + + if (re.trim().endsWith(":")) + try { + String n = m.group(2); + if (n == null) + count++; + else + count += Integer.parseInt(n.substring(1, n.length() - 1)); + } catch (NumberFormatException ex) { + Log.e(ex); + count++; + } + else + count++; + + break; + } } + if (!found) + break; } - return (found ? 1 : 0); + return count; } static String collapsePrefixes(Context context, String language, String subject, boolean forward) { @@ -361,10 +378,12 @@ public class EntityMessage implements Serializable { Matcher m = getPattern(prefix.first.trim()).matcher(subject); if (m.matches()) { found = true; + subject = m.group(m.groupCount()).trim(); + int count = scanned.size(); if (!prefix.second.equals(count == 0 ? forward : scanned.get(count - 1))) scanned.add(prefix.second); - subject = m.group(m.groupCount()); + break; } }