diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index 5041402a2c..776ff36ddd 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -708,11 +708,11 @@ public class AdapterFolder extends RecyclerView.Adapter folders = db.folder().getChildFolders(folder.id); - if (folders != null) - for (EntityFolder child : folders) - if (child.selectable) - EntityOperation.sync(context, child.id, true); + List folders = EntityFolder.getChildFolders(context, folder.id); + for (EntityFolder child : folders) + if (child.selectable) + EntityOperation.sync(context, child.id, true); } if (folder.account != null) { @@ -935,10 +934,8 @@ public class AdapterFolder extends RecyclerView.Adapter children = db.folder().getChildFolders(id); - if (children == null) - return null; + List children = EntityFolder.getChildFolders(context, id); for (EntityFolder child : children) db.folder().setFolderSynchronize(child.id, enabled); @@ -973,10 +970,8 @@ public class AdapterFolder extends RecyclerView.Adapter children = db.folder().getChildFolders(id); - if (children == null) - return null; + List children = EntityFolder.getChildFolders(context, id); for (EntityFolder child : children) db.folder().setFolderNotify(child.id, enabled); @@ -1009,10 +1004,8 @@ public class AdapterFolder extends RecyclerView.Adapter children = db.folder().getChildFolders(id); - if (children == null) - return null; + List children = EntityFolder.getChildFolders(context, id); for (EntityFolder child : children) db.folder().setFolderUnified(child.id, add); @@ -1045,10 +1038,8 @@ public class AdapterFolder extends RecyclerView.Adapter children = db.folder().getChildFolders(id); - if (children == null) - return null; + List children = EntityFolder.getChildFolders(context, id); for (EntityFolder child : children) db.folder().setFolderNavigation(child.id, enabled); @@ -1092,10 +1083,8 @@ public class AdapterFolder extends RecyclerView.Adapter children = db.folder().getChildFolders(id); - if (children == null) - return null; + List children = EntityFolder.getChildFolders(context, id); for (EntityFolder child : children) db.folder().setFolderDownload(child.id, enabled); diff --git a/app/src/main/java/eu/faircode/email/EntityFolder.java b/app/src/main/java/eu/faircode/email/EntityFolder.java index cd76532898..010cc976e9 100644 --- a/app/src/main/java/eu/faircode/email/EntityFolder.java +++ b/app/src/main/java/eu/faircode/email/EntityFolder.java @@ -415,6 +415,16 @@ public class EntityFolder extends EntityOrder implements Serializable { return outbox; } + static List getChildFolders(Context context, long id) { + DB db = DB.getInstance(context); + List children = db.folder().getChildFolders(id); + if (children == null) + children = new ArrayList<>(); + for (EntityFolder child : new ArrayList<>(children)) + children.addAll(getChildFolders(context, child.id)); + return children; + } + static String getNotificationChannelId(long id) { return "notification.folder." + id; } diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogSync.java b/app/src/main/java/eu/faircode/email/FragmentDialogSync.java index a61370901a..b9fca1e909 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogSync.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogSync.java @@ -110,9 +110,8 @@ public class FragmentDialogSync extends FragmentDialogBase { folders.add(folder); if (children) { - List sub = db.folder().getChildFolders(folder.id); - if (sub != null) - folders.addAll(sub); + List sub = EntityFolder.getChildFolders(context, folder.id); + folders.addAll(sub); } }