From 5a1f2b4fdf6873513581823618363c730f29d659 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 1 Apr 2020 12:50:15 +0200 Subject: [PATCH] Update message hash --- app/src/main/java/eu/faircode/email/Core.java | 14 +++++++------- .../main/java/eu/faircode/email/MessageHelper.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 200ee938cd..8bd76cc8f9 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -78,7 +78,6 @@ import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.nio.charset.StandardCharsets; -import java.security.NoSuchAlgorithmException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -2134,12 +2133,7 @@ class Core { if (TextUtils.isEmpty(message.msgid)) Log.w("No Message-ID id=" + message.id + " uid=" + message.uid); - try { - message.hash = Helper.sha1(helper.getHeaders().getBytes()); - } catch (NoSuchAlgorithmException ex) { - Log.e(ex); - } - + message.hash = helper.getHash(); message.references = TextUtils.join(" ", helper.getReferences()); message.inreplyto = helper.getInReplyTo(); // Local address contains control or whitespace in string ``mailing list someone@example.org'' @@ -2418,6 +2412,12 @@ class Core { " keywords=" + TextUtils.join(" ", keywords)); } + if (message.hash == null) { + update = true; + message.hash = helper.getHash(); + Log.i(folder.name + " updated id=" + message.id + " uid=" + message.uid + " hash=" + message.hash); + } + if (message.ui_hide && message.ui_snoozed == null && (message.ui_busy == null || message.ui_busy < new Date().getTime()) && diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index bf174b7c03..40d167e25a 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -52,6 +52,7 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -1182,6 +1183,15 @@ public class MessageHelper { return sb.toString(); } + String getHash() throws MessagingException { + try { + return Helper.sha1(getHeaders().getBytes()); + } catch (NoSuchAlgorithmException ex) { + Log.e(ex); + return null; + } + } + static String formatAddresses(Address[] addresses) { return formatAddresses(addresses, true, false); }