maxage: fix timezone issues, remove IMAP-IMAP support, add startdate option
1. When using maxage, local and remote messagelists are supposed to only contain messages from at most maxage days ago. But local and remote used different timezones to calculate what "maxage days ago" means, resulting in removals on one side. Now, we ask the local folder for maxage days' worth of mail, find the lowest UID, and then ask the remote folder for all UID's starting with that lowest one. 2. maxage was fundamentally wrong in the IMAP-IMAP case: it assumed that remote messages have UIDs in the same order as their local counterparts, which could be false, e.g. when messages are copied in quick succession. So, remove support for maxage in the IMAP-IMAP case. 3. Add startdate option for IMAP-IMAP syncs: use messages from the given repository starting at startdate, and all messages from the other repository. In the first sync, the other repository must be empty. 4. Allow maxage to be specified either as number of days to sync (as previously) or as a fixed date. Signed-off-by: Janna Martl <janna.martl109@gmail.com> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:

committed by
Nicolas Sebrecht

parent
71693b7d8c
commit
8096f6cd5b
@ -121,16 +121,18 @@ class GmailFolder(IMAPFolder):
|
||||
|
||||
# TODO: merge this code with the parent's cachemessagelist:
|
||||
# TODO: they have too much common logics.
|
||||
def cachemessagelist(self):
|
||||
def cachemessagelist(self, min_date=None, min_uid=None):
|
||||
if not self.synclabels:
|
||||
return super(GmailFolder, self).cachemessagelist()
|
||||
return super(GmailFolder, self).cachemessagelist(
|
||||
min_date=min_date, min_uid=min_uid)
|
||||
|
||||
self.messagelist = {}
|
||||
|
||||
self.ui.collectingdata(None, self)
|
||||
imapobj = self.imapserver.acquireconnection()
|
||||
try:
|
||||
msgsToFetch = self._msgs_to_fetch(imapobj)
|
||||
msgsToFetch = self._msgs_to_fetch(
|
||||
imapobj, min_date=min_date, min_uid=min_uid)
|
||||
if not msgsToFetch:
|
||||
return # No messages to sync
|
||||
|
||||
|
Reference in New Issue
Block a user