diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 69d923317b..abf3f49ff0 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2961,17 +2961,11 @@ class Core { msgid + "=" + msgIdTuple.containsKey(msgid) + "/" + uidl + "=" + uidlTuple.containsKey(uidl)); - if (tuple.ui_hide) { - boolean found = false; - List threaded = db.message().getMessagesByThread(account.id, tuple.thread, null, null); - for (EntityMessage m : threaded) - if (!m.folder.equals(folder.id) && m.received > 1654034400 /* 2022-06-01 */) { - found = true; - break; - } - if (!found) - db.message().setMessageUiHide(tuple.id, false); - } + // Restore orphan POP3 moves + if (tuple.ui_hide && + tuple.ui_busy != null && + tuple.ui_busy < new Date().getTime()) + db.message().setMessageUiHide(tuple.id, false); if (download_eml) try { diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index a5d3f140f9..449dd4270f 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -638,7 +638,7 @@ public interface DaoMessage { " AND NOT uid IS NULL") List getBusyUids(long folder, long time); - @Query("SELECT id, uidl, msgid, thread, ui_hide FROM message" + + @Query("SELECT id, uidl, msgid, thread, ui_hide, ui_busy 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 81497f6dea..f9905171ba 100644 --- a/app/src/main/java/eu/faircode/email/TupleUidl.java +++ b/app/src/main/java/eu/faircode/email/TupleUidl.java @@ -25,4 +25,5 @@ public class TupleUidl { String msgid; String thread; boolean ui_hide; + Long ui_busy; }