Fixed handling known messages

Fixes #41
pull/50/head
M66B 7 years ago
parent e1c07bc0a4
commit 76557a7345

@ -85,7 +85,7 @@ public interface DaoMessage {
" WHERE msgid = :msgid" + " WHERE msgid = :msgid" +
" AND folder.type <> '" + EntityFolder.INBOX + "'" + " AND folder.type <> '" + EntityFolder.INBOX + "'" +
" AND folder.type <> '" + EntityFolder.ARCHIVE + "'") " AND folder.type <> '" + EntityFolder.ARCHIVE + "'")
EntityMessage getMessageByMsgId(String msgid); List<EntityMessage> getMessageByMsgId(String msgid);
@Query("SELECT message.* FROM message" + @Query("SELECT message.* FROM message" +
" JOIN folder ON folder.id = message.folder" + " JOIN folder ON folder.id = message.folder" +

@ -1222,19 +1222,18 @@ public class ServiceSynchronize extends LifecycleService {
if (message == null) { if (message == null) {
// Will fetch headers within database transaction // Will fetch headers within database transaction
String msgid = helper.getMessageID(); String msgid = helper.getMessageID();
message = db.message().getMessageByMsgId(msgid); for (EntityMessage dup : db.message().getMessageByMsgId(msgid)) {
if (message != null) { EntityFolder dfolder = db.folder().getFolder(dup.folder);
EntityFolder mfolder = db.folder().getFolder(message.folder); Log.i(Helper.TAG, folder.name + " found as id=" + dup.id +
Log.i(Helper.TAG, folder.name + " found as id=" + message.id + " folder=" + dfolder.type + ":" + dup.folder + "/" + folder.type + ":" + folder.id);
" folder=" + mfolder.type + ":" + message.folder + "/" + folder.type + ":" + folder.id); if (dup.folder.equals(folder.id) || EntityFolder.OUTBOX.equals(dfolder.type)) {
if (message.folder.equals(folder.id) || EntityFolder.OUTBOX.equals(mfolder.type)) { Log.i(Helper.TAG, folder.name + " found as id=" + dup.id + " uid=" + dup.uid + " msgid=" + msgid);
Log.i(Helper.TAG, folder.name + " found as id=" + message.id + " uid=" + message.uid + " msgid=" + msgid); dup.folder = folder.id;
message.folder = folder.id; dup.uid = uid;
message.uid = uid; db.message().updateMessage(dup);
db.message().updateMessage(message); message = dup;
result = -1; result = -1;
} else }
message = null;
} }
} }

Loading…
Cancel
Save