Move existing, delete removed

pull/168/head
M66B 6 years ago
parent 06720b8d4c
commit 52d2ad5364

@ -435,9 +435,11 @@ class Core {
ex instanceof MessageRemovedIOException || ex instanceof MessageRemovedIOException ||
ex.getCause() instanceof MessageRemovedException || ex.getCause() instanceof MessageRemovedException ||
ex.getCause() instanceof MessageRemovedIOException)) { ex.getCause() instanceof MessageRemovedIOException)) {
// Failsafe: retry batch
if (similar.size() > 0)
throw ex;
db.message().deleteMessage(message.id); db.message().deleteMessage(message.id);
for (EntityMessage m : similar.values())
db.message().deleteMessage(m.id);
} }
// Cleanup operations // Cleanup operations
@ -788,14 +790,15 @@ class Core {
// Get source messages // Get source messages
Map<Message, EntityMessage> map = new HashMap<>(); Map<Message, EntityMessage> map = new HashMap<>();
for (EntityMessage message : messages) for (EntityMessage message : messages)
if (message.uid != null) try {
try { Message imessage = ifolder.getMessageByUID(message.uid);
Message imessage = ifolder.getMessageByUID(message.uid); if (imessage == null)
if (imessage != null) throw new MessageRemovedException();
map.put(imessage, message); map.put(imessage, message);
} catch (MessagingException ex) { } catch (MessageRemovedException ex) {
Log.w(ex); Log.w(ex);
} db.message().deleteMessage(message.id);
}
// Some providers do not support the COPY operation for drafts // Some providers do not support the COPY operation for drafts
boolean draft = (EntityFolder.DRAFTS.equals(folder.type) || EntityFolder.DRAFTS.equals(target.type)); boolean draft = (EntityFolder.DRAFTS.equals(folder.type) || EntityFolder.DRAFTS.equals(target.type));

Loading…
Cancel
Save