Fixed unified inbox folders with child folders

pull/156/head
M66B 6 years ago
parent 845eff88b4
commit b4fbf80141

@ -690,37 +690,42 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
if (folders.size() > 0) if (folders.size() > 0)
Collections.sort(folders, folders.get(0).getComparator(context)); Collections.sort(folders, folders.get(0).getComparator(context));
List<TupleFolderEx> parents = new ArrayList<>(); List<TupleFolderEx> hierarchical;
Map<Long, TupleFolderEx> idFolder = new HashMap<>(); if (account < 0)
Map<Long, List<TupleFolderEx>> parentChilds = new HashMap<>(); hierarchical = folders;
else {
for (TupleFolderEx folder : folders) { List<TupleFolderEx> parents = new ArrayList<>();
idFolder.put(folder.id, folder); Map<Long, TupleFolderEx> idFolder = new HashMap<>();
if (folder.parent == null) Map<Long, List<TupleFolderEx>> parentChilds = new HashMap<>();
parents.add(folder);
else { for (TupleFolderEx folder : folders) {
if (!parentChilds.containsKey(folder.parent)) idFolder.put(folder.id, folder);
parentChilds.put(folder.parent, new ArrayList<TupleFolderEx>()); if (folder.parent == null)
parentChilds.get(folder.parent).add(folder); parents.add(folder);
else {
if (!parentChilds.containsKey(folder.parent))
parentChilds.put(folder.parent, new ArrayList<TupleFolderEx>());
parentChilds.get(folder.parent).add(folder);
}
} }
}
TupleFolderEx root = new TupleFolderEx(); TupleFolderEx root = new TupleFolderEx();
root.name = "[root]"; root.name = "[root]";
root.child_refs = parents; root.child_refs = parents;
for (TupleFolderEx parent : parents) for (TupleFolderEx parent : parents)
parent.parent_ref = root; parent.parent_ref = root;
for (long pid : parentChilds.keySet()) { for (long pid : parentChilds.keySet()) {
TupleFolderEx parent = idFolder.get(pid); TupleFolderEx parent = idFolder.get(pid);
if (parent != null) { if (parent != null) {
parent.child_refs = parentChilds.get(pid); parent.child_refs = parentChilds.get(pid);
for (TupleFolderEx child : parent.child_refs) for (TupleFolderEx child : parent.child_refs)
child.parent_ref = parent; child.parent_ref = parent;
}
} }
}
List<TupleFolderEx> hierarchical = getHierarchical(parents, 0); hierarchical = getHierarchical(parents, 0);
}
DiffUtil.DiffResult diff = DiffUtil.calculateDiff(new DiffCallback(items, hierarchical), false); DiffUtil.DiffResult diff = DiffUtil.calculateDiff(new DiffCallback(items, hierarchical), false);

Loading…
Cancel
Save