Fixed folder synchronization

This commit is contained in:
M66B 2019-02-04 10:08:09 +00:00
parent 086e2ea6ff
commit 0cb5b3e074
2 changed files with 14 additions and 11 deletions

View File

@ -198,7 +198,7 @@ public interface DaoFolder {
@Query("UPDATE folder SET last_sync = :last_sync WHERE id = :id") @Query("UPDATE folder SET last_sync = :last_sync WHERE id = :id")
int setFolderSync(long id, long last_sync); int setFolderSync(long id, long last_sync);
@Query("UPDATE folder SET tbc = 0 WHERE id = :id") @Query("UPDATE folder SET tbc = null WHERE id = :id")
int resetFolderTbc(long id); int resetFolderTbc(long id);
@Query("UPDATE folder SET tbd = 1 WHERE id = :id") @Query("UPDATE folder SET tbd = 1 WHERE id = :id")

View File

@ -2187,22 +2187,25 @@ public class ServiceSynchronize extends LifecycleService {
Log.i("Start sync folders account=" + account.name); Log.i("Start sync folders account=" + account.name);
List<String> names = new ArrayList<>(); List<String> names = new ArrayList<>();
for (EntityFolder folder : db.folder().getFolders(account.id)) { for (EntityFolder folder : db.folder().getFolders(account.id))
if (folder.tbc != null) { if (folder.tbc != null) {
Log.i(folder.name + " creating");
IMAPFolder ifolder = (IMAPFolder) istore.getFolder(folder.name); IMAPFolder ifolder = (IMAPFolder) istore.getFolder(folder.name);
ifolder.create(Folder.HOLDS_MESSAGES); try {
db.folder().resetFolderTbc(folder.id); ifolder.create(Folder.HOLDS_MESSAGES);
} db.folder().resetFolderTbc(folder.id);
} catch (Throwable ex) {
if (folder.tbd == null) reportError(account, folder, ex);
names.add(folder.name); db.folder().deleteFolder(folder.id);
else { }
} else if (folder.tbd != null) {
Log.i(folder.name + " deleting");
IMAPFolder ifolder = (IMAPFolder) istore.getFolder(folder.name); IMAPFolder ifolder = (IMAPFolder) istore.getFolder(folder.name);
if (ifolder.exists()) if (ifolder.exists())
ifolder.delete(false); ifolder.delete(false);
db.folder().deleteFolder(folder.id); db.folder().deleteFolder(folder.id);
} } else
} names.add(folder.name);
Log.i("Local folder count=" + names.size()); Log.i("Local folder count=" + names.size());
Folder defaultFolder = istore.getDefaultFolder(); Folder defaultFolder = istore.getDefaultFolder();