X-Git-Url: https://code.delx.au/offlineimap/blobdiff_plain/ac7c5a47efc80baa0270d949b72e596e5b25129b..b925fd129650a6ba4357edb57ff27e3e8ea3a341:/offlineimap/accounts.py diff --git a/offlineimap/accounts.py b/offlineimap/accounts.py index 9f224d0..a78dc36 100644 --- a/offlineimap/accounts.py +++ b/offlineimap/accounts.py @@ -145,10 +145,19 @@ class AccountSynchronizationMixin: localrepos = self.localrepos statusrepos = self.statusrepos self.ui.syncfolders(remoterepos, localrepos) - remoterepos.syncfoldersto(localrepos) + + (remoteignored,remotenew) = remoterepos.syncfoldersto(localrepos,statusrepos) + if len(remotenew): + localrepos.forgetfolders() + + (localignored,localnew) = localrepos.syncfoldersto(remoterepos,statusrepos) + if len(localnew): + remoterepos.forgetfolders() folderthreads = [] for remotefolder in remoterepos.getfolders(): + if remotefolder.getvisiblename() in remoteignored: + continue thread = InstanceLimitedThread(\ instancename = 'FOLDER_' + self.remoterepos.getname(), target = syncfolder, @@ -233,6 +242,14 @@ def syncfolder(accountname, remoterepos, remotefolder, localrepos, # + if ((statusfolder.isnewfolder()) and + (len(localfolder.getmessagelist()) > 0) and + (len(remotefolder.getmessagelist()) == 0)): + # This is a locally created folder. Copy its contents to the + # remote folder, and to the StatusFolder. + + localfolder.syncmessagesto(statusfolder, [remotefolder, statusfolder]) + if not statusfolder.isnewfolder(): # Delete local copies of remote messages. This way, # if a message's flag is modified locally but it has been