Fix POP3 uidls

This commit is contained in:
M66B 2020-05-13 14:33:47 +02:00
parent e3f899a81f
commit 5873f89efd
2 changed files with 19 additions and 6 deletions

View File

@ -1536,12 +1536,14 @@ class Core {
List<TupleUidl> ids = db.message().getUidls(folder.id);
Log.i(folder.name + " POP existing=" + ids.size());
// Map identifiers
Map<String, TupleUidl> uidls = new HashMap<>();
Map<String, TupleUidl> msgids = new HashMap<>();
for (TupleUidl id : ids)
if (id.uidl == null)
db.message().deleteMessage(id.id);
else
if (id.uidl != null)
uidls.put(id.uidl, id);
else if (id.msgid != null)
msgids.put(id.msgid, id);
for (Message imessage : imessages)
try {
@ -1560,10 +1562,19 @@ class Core {
if (uidls.containsKey(uidl)) {
uidls.remove(uidl);
Log.i(folder.name + " POP having=" + uidl);
Log.i(folder.name + " POP having uidl=" + uidl);
continue;
}
if (caps.containsKey("UIDL")) {
String msgid = helper.getMessageID();
if (msgids.containsKey(msgid)) {
Log.i(folder.name + " POP having msgid=" + msgid);
db.message().setMessageUidl(msgids.get(msgid).id, uidl);
continue;
}
}
try {
Log.i(folder.name + " POP sync=" + uidl);

View File

@ -664,10 +664,12 @@ public interface DaoMessage {
@Query("UPDATE message SET ui_found = 0")
int resetSearch();
@Query("UPDATE message SET ui_snoozed = :wakeup" +
" WHERE id = :id")
@Query("UPDATE message SET ui_snoozed = :wakeup WHERE id = :id")
int setMessageSnoozed(long id, Long wakeup);
@Query("UPDATE message SET uidl = :uidl WHERE id = :id")
int setMessageUidl(long id, String uidl);
@Query("UPDATE message SET notifying = 0")
int clearNotifyingMessages();