From 023c60513eeb308f280c836b3334c0959d5de4b3 Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 16 Feb 2012 23:37:44 +0100 Subject: [PATCH] Fixed UID mapping return value of LocalStore.moveMessages() --- src/com/fsck/k9/mail/store/LocalStore.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/fsck/k9/mail/store/LocalStore.java b/src/com/fsck/k9/mail/store/LocalStore.java index ca8980ab0..c36350dfa 100644 --- a/src/com/fsck/k9/mail/store/LocalStore.java +++ b/src/com/fsck/k9/mail/store/LocalStore.java @@ -1963,7 +1963,10 @@ public class LocalStore extends Store implements Serializable { Log.d(K9.LOG_TAG, "Updating folder_id to " + lDestFolder.getId() + " for message with UID " + message.getUid() + ", id " + lMessage.getId() + " currently in folder " + getName()); - message.setUid(K9.LOCAL_UID_PREFIX + UUID.randomUUID().toString()); + String newUid = K9.LOCAL_UID_PREFIX + UUID.randomUUID().toString(); + message.setUid(newUid); + + uidMap.put(oldUID, newUid); db.execSQL("UPDATE messages " + "SET folder_id = ?, uid = ? " + "WHERE id = ?", new Object[] { lDestFolder.getId(), @@ -1971,10 +1974,15 @@ public class LocalStore extends Store implements Serializable { lMessage.getId() }); + /* + * Add a placeholder message so we won't download the original + * message again if we synchronize before the remote move is + * complete. + */ LocalMessage placeHolder = new LocalMessage(oldUID, LocalFolder.this); placeHolder.setFlagInternal(Flag.DELETED, true); placeHolder.setFlagInternal(Flag.SEEN, true); - uidMap.putAll(appendMessages(new Message[] { placeHolder })); + appendMessages(new Message[] { placeHolder }); } } catch (MessagingException e) { throw new WrappedException(e);