summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/leap/mail/imap/mailbox.py1
-rw-r--r--src/leap/mail/imap/messages.py12
2 files changed, 13 insertions, 0 deletions
diff --git a/src/leap/mail/imap/mailbox.py b/src/leap/mail/imap/mailbox.py
index 94070ac..86dac77 100644
--- a/src/leap/mail/imap/mailbox.py
+++ b/src/leap/mail/imap/mailbox.py
@@ -463,6 +463,7 @@ class SoledadMailbox(WithMsgFields, MBoxParser):
if not self.isWriteable():
raise imap4.ReadOnlyMailbox
d = self.messages.remove_all_deleted()
+ d.addCallback(self.messages.reset_last_uid)
d.addCallback(self._expunge_cb)
return d
diff --git a/src/leap/mail/imap/messages.py b/src/leap/mail/imap/messages.py
index 22de356..02df38e 100644
--- a/src/leap/mail/imap/messages.py
+++ b/src/leap/mail/imap/messages.py
@@ -1337,6 +1337,18 @@ class MessageCollection(WithMsgFields, IndexedDB, MailParser, MBoxParser,
fields.TYPE_FLAGS_VAL, self.mbox))
return (u for u in sorted(all_uids))
+ def reset_last_uid(self, param):
+ """
+ Set the last uid to the highest uid found.
+ Used while expunging, passed as a callback.
+ """
+ try:
+ self.last_uid = max(self.all_uid_iter()) + 1
+ except ValueError:
+ # empty sequence
+ pass
+ return param
+
def all_flags(self):
"""
Return a dict with all flags documents for this mailbox.