diff options
author | Kali Kaneko <kali@leap.se> | 2014-01-16 17:18:11 -0400 |
---|---|---|
committer | Kali Kaneko <kali@leap.se> | 2014-01-16 17:18:11 -0400 |
commit | ae56191d2d6f2953bd49f43b9dedb322a7f0db8c (patch) | |
tree | 2cff3711577d3e98cbfe1098b811f60e66d0fa58 | |
parent | 61454c82de35778d27bcd1a2c89fe20ee3d5b142 (diff) |
reset last uid on expunge
-rw-r--r-- | src/leap/mail/imap/mailbox.py | 1 | ||||
-rw-r--r-- | src/leap/mail/imap/messages.py | 12 |
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. |