From 840c7e8c50a42c0cfa514feaaf5fa4d7e9e78e45 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 23 Dec 2020 18:09:38 +0100 Subject: [PATCH] Check message ID on exists --- app/src/main/java/eu/faircode/email/Core.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index e0e496483c..abeaf73cea 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1534,7 +1534,7 @@ class Core { EntityLog.log(context, "Operation attachment size=" + attachment.size); } - private static void onExists(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, EntityOperation op, IMAPFolder ifolder) throws MessagingException { + private static void onExists(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, EntityOperation op, IMAPFolder ifolder) throws MessagingException, IOException { if (message.uid != null) return; @@ -1554,8 +1554,20 @@ class Core { } if (imessages != null && imessages.length == 1) { - long uid = ifolder.getUID(imessages[0]); - EntityOperation.queue(context, folder, EntityOperation.FETCH, uid); + String msgid; + try { + MessageHelper helper = new MessageHelper((MimeMessage) imessages[0], context); + msgid = helper.getMessageID(); + } catch (MessagingException ex) { + Log.e(ex); + msgid = message.msgid; + } + if (Objects.equals(message.msgid, msgid)) { + long uid = ifolder.getUID(imessages[0]); + EntityOperation.queue(context, folder, EntityOperation.FETCH, uid); + } else { + EntityOperation.queue(context, message, EntityOperation.ADD); + } } else { if (imessages != null && imessages.length > 1) Log.e(folder.name + " EXISTS messages=" + imessages.length);