Delete previous draft

pull/194/merge
M66B 4 years ago
parent fdaa95b59c
commit 1ee3ef6f5e

@ -1132,10 +1132,24 @@ class Core {
// Some providers do not list the new message yet // Some providers do not list the new message yet
try { try {
List<Message> delete = new ArrayList<>();
if (message.uid != null)
try {
Message iprev = ifolder.getMessageByUID(message.uid);
if (iprev != null) {
Log.i(folder.name + " found prev uid=" + message.uid + " msgid=" + message.msgid);
iprev.setFlag(Flags.Flag.DELETED, true);
delete.add(iprev);
}
} catch (Throwable ex) {
Log.w(ex);
}
Log.i(folder.name + " searching for added msgid=" + message.msgid); Log.i(folder.name + " searching for added msgid=" + message.msgid);
Message[] imessages = findMsgId(context, account, ifolder, message.msgid); Message[] imessages = findMsgId(context, account, ifolder, message.msgid);
if (imessages != null) { if (imessages != null) {
Long found = null; Long found = newuid;
for (Message iexisting : imessages) for (Message iexisting : imessages)
try { try {
@ -1153,13 +1167,13 @@ class Core {
if (newuid == null || found > newuid) if (newuid == null || found > newuid)
newuid = found; newuid = found;
List<Message> delete = new ArrayList<>();
for (Message iexisting : imessages) for (Message iexisting : imessages)
try { try {
long muid = ifolder.getUID(iexisting); long muid = ifolder.getUID(iexisting);
if (muid < 0) if (muid < 0)
continue; continue;
if (muid < newuid) if (muid < newuid &&
(message.uid == null || message.uid != muid))
try { try {
iexisting.setFlag(Flags.Flag.DELETED, true); iexisting.setFlag(Flags.Flag.DELETED, true);
delete.add(iexisting); delete.add(iexisting);
@ -1169,10 +1183,11 @@ class Core {
} catch (MessageRemovedException ex) { } catch (MessageRemovedException ex) {
Log.w(ex); Log.w(ex);
} }
expunge(context, ifolder, delete);
} }
} }
expunge(context, ifolder, delete);
} catch (MessagingException ex) { } catch (MessagingException ex) {
Log.w(ex); Log.w(ex);
} }

Loading…
Cancel
Save