From e05aa83e94a3c2cca36222596b13e1e33ce3e72c Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 10 May 2020 11:39:11 +0200 Subject: [PATCH] Fixing duplicate POP3 messages --- app/src/main/java/eu/faircode/email/Core.java | 7 +++++++ app/src/main/java/eu/faircode/email/DaoMessage.java | 2 +- app/src/main/java/eu/faircode/email/TupleUidl.java | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index e4672d534f..e6344002bc 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1533,9 +1533,16 @@ class Core { Log.i(folder.name + " POP existing=" + ids.size()); Map uidls = new HashMap<>(); + Map msgids = new HashMap<>(); for (TupleUidl id : ids) if (id.uidl != null) uidls.put(id.uidl, id); + else if (id.msgid != null) + msgids.put(id.msgid, id); + + for (TupleUidl id : uidls.values()) + if (id.msgid != null && msgids.containsKey(id.msgid)) + db.message().deleteMessage(id.id); for (Message imessage : imessages) try { diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 0f6e302530..1088184178 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -485,7 +485,7 @@ public interface DaoMessage { " AND NOT uid IS NULL") List getUids(long folder, Long received); - @Query("SELECT uidl, msgid FROM message" + + @Query("SELECT id, uidl, msgid FROM message" + " WHERE folder = :folder") List getUidls(long folder); diff --git a/app/src/main/java/eu/faircode/email/TupleUidl.java b/app/src/main/java/eu/faircode/email/TupleUidl.java index d78dab7805..27bdf666f7 100644 --- a/app/src/main/java/eu/faircode/email/TupleUidl.java +++ b/app/src/main/java/eu/faircode/email/TupleUidl.java @@ -20,6 +20,7 @@ package eu.faircode.email; */ public class TupleUidl { + long id; String uidl; String msgid; }