Synchronize selectable folders only

pull/145/head
M66B 7 years ago
parent b16c6b7f56
commit 51a7433dfd

@ -1436,25 +1436,36 @@ public class ServiceSynchronize extends LifecycleService {
Log.i(Helper.TAG, "Remote folder count=" + ifolders.length); Log.i(Helper.TAG, "Remote folder count=" + ifolders.length);
for (Folder ifolder : ifolders) { for (Folder ifolder : ifolders) {
EntityFolder folder = db.folder().getFolderByName(account.id, ifolder.getFullName()); boolean selectable = true;
if (folder == null) { String[] attrs = ((IMAPFolder) ifolder).getAttributes();
folder = new EntityFolder(); for (String attr : attrs) {
folder.account = account.id; if ("\\Noselect".equals(attr))
folder.name = ifolder.getFullName(); selectable = false;
folder.type = EntityFolder.USER; }
folder.synchronize = false;
folder.after = EntityFolder.DEFAULT_USER_SYNC; if (selectable) {
db.folder().insertFolder(folder); EntityFolder folder = db.folder().getFolderByName(account.id, ifolder.getFullName());
Log.i(Helper.TAG, folder.name + " added"); if (folder == null) {
} else { folder = new EntityFolder();
names.remove(folder.name); folder.account = account.id;
Log.i(Helper.TAG, folder.name + " exists"); folder.name = ifolder.getFullName();
folder.type = EntityFolder.USER;
folder.synchronize = false;
folder.after = EntityFolder.DEFAULT_USER_SYNC;
db.folder().insertFolder(folder);
Log.i(Helper.TAG, folder.name + " added");
} else {
names.remove(folder.name);
Log.i(Helper.TAG, folder.name + " exists");
}
} }
} }
Log.i(Helper.TAG, "Delete local folder=" + names.size()); Log.i(Helper.TAG, "Delete local folder=" + names.size());
for (String name : names) for (String name : names) {
db.folder().deleteFolder(account.id, name); db.folder().deleteFolder(account.id, name);
Log.i(Helper.TAG, name + " deleted");
}
db.setTransactionSuccessful(); db.setTransactionSuccessful();
} finally { } finally {

Loading…
Cancel
Save