From ba186235e011cc5ef7e929c7a2c67098270a138b Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 7 Jul 2022 20:57:22 +0200 Subject: [PATCH] Simplified references --- .../java/eu/faircode/email/MessageHelper.java | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 76dd1f1716..ce00ed9a30 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -1267,22 +1267,20 @@ public class MessageHelper { List result = new ArrayList<>(); String refs = imessage.getHeader("References", null); - if (refs != null) - result.addAll(Arrays.asList(getReferences(refs))); + result.addAll(getReferences(refs)); // Merge references of reported message for threading InternetHeaders iheaders = getReportHeaders(); if (iheaders != null) { String arefs = iheaders.getHeader("References", null); - if (arefs != null) - for (String ref : getReferences(arefs)) - if (!result.contains(ref)) { - Log.i("rfc822 ref=" + ref); - result.add(ref); - } + for (String ref : getReferences(arefs)) + if (!result.contains(ref)) { + Log.i("rfc822 ref=" + ref); + result.add(ref); + } String amsgid = iheaders.getHeader("Message-Id", null); - if (amsgid != null) { + if (!TextUtils.isEmpty(amsgid)) { String msgid = MimeUtility.unfold(amsgid); if (!result.contains(msgid)) { Log.i("rfc822 id=" + msgid); @@ -1294,8 +1292,17 @@ public class MessageHelper { return result.toArray(new String[0]); } - private String[] getReferences(String header) { - return MimeUtility.unfold(header).split("[,\\s]+"); + private List getReferences(String header) { + List result = new ArrayList<>(); + if (header == null) + return result; + header = MimeUtility.unfold(header); + if (TextUtils.isEmpty(header)) + return result; + for (String ref : header.split("[,\\s]+")) + if (!result.contains(ref)) + result.add(ref); + return result; } String getDeliveredTo() throws MessagingException { @@ -1325,15 +1332,14 @@ public class MessageHelper { List result = new ArrayList<>(); String header = imessage.getHeader("In-Reply-To", null); - if (header != null) - result.addAll(Arrays.asList(getReferences(header))); + result.addAll(getReferences(header)); if (result.size() == 0) { // Use reported message ID as synthetic in-reply-to InternetHeaders iheaders = getReportHeaders(); if (iheaders != null) { header = iheaders.getHeader("Message-Id", null); - if (header != null) { + if (!TextUtils.isEmpty(header)) { result.add(header); Log.i("rfc822 id=" + header); }