diff options
| author | Kali Kaneko <kali@leap.se> | 2015-03-23 13:08:24 -0400 | 
|---|---|---|
| committer | Kali Kaneko <kali@leap.se> | 2015-03-30 14:48:14 -0400 | 
| commit | d11c03d1126f1744789d107b0f9bd04fc8a2f50b (patch) | |
| tree | 654c961893321ea67be60d187a5746e17e97d209 /src/leap/mail/mail.py | |
| parent | 30ffa594249960da99d299b77f007ebc20072fbc (diff) | |
[bug] move creation_ts to mail generic api
This also fixes a bug in which INBOX wasn't being given a creation
timestamp, and therefore always being identified with the same
UIDVALIDITY = 1, which could be confusing MUAs since this value should
be unique, and it's relied on to uniquely identifying a given message.
Releases: 0.4.0
Diffstat (limited to 'src/leap/mail/mail.py')
| -rw-r--r-- | src/leap/mail/mail.py | 17 | 
1 files changed, 16 insertions, 1 deletions
| diff --git a/src/leap/mail/mail.py b/src/leap/mail/mail.py index 99c3873..89f89b0 100644 --- a/src/leap/mail/mail.py +++ b/src/leap/mail/mail.py @@ -21,6 +21,7 @@ import itertools  import uuid  import logging  import StringIO +import time  import weakref  from twisted.internet import defer @@ -833,7 +834,20 @@ class Account(object):          d = self.adaptor.get_all_mboxes(self.store)          return d -    def add_mailbox(self, name): +    def add_mailbox(self, name, creation_ts=None): + +        if creation_ts is None: +            # by default, we pass an int value +            # taken from the current time +            # we make sure to take enough decimals to get a unique +            # mailbox-uidvalidity. +            creation_ts = int(time.time() * 10E2) + +        def set_creation_ts(wrapper): +            wrapper.created = creation_ts +            d = wrapper.update(self.store) +            d.addCallback(lambda _: wrapper) +            return d          def create_uuid(wrapper):              if not wrapper.uuid: @@ -849,6 +863,7 @@ class Account(object):              return d          d = self.adaptor.get_or_create_mbox(self.store, name) +        d.addCallback(set_creation_ts)          d.addCallback(create_uuid)          d.addCallback(create_uid_table_cb)          return d | 
