mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-07 03:07:26 +01:00
Fix comment expanding logic (#1155)
Child comment expanding was broken because it did not take into account children of children of children and deeper levels of comments when calculating new comment's position. Replaced with a simple tree to list conversion in pre-order.
This commit is contained in:
parent
297c20f5d3
commit
d11fb884c2
@ -802,16 +802,12 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void expandChildren(ArrayList<Comment> comments, ArrayList<Comment> newList, int position) {
|
private void expandChildren(ArrayList<Comment> comments, ArrayList<Comment> newList) {
|
||||||
if (comments != null && comments.size() > 0) {
|
if (comments != null && comments.size() > 0) {
|
||||||
newList.addAll(position, comments);
|
for (Comment comment : comments) {
|
||||||
for (int i = 0; i < comments.size(); i++) {
|
newList.add(comment);
|
||||||
position++;
|
expandChildren(comment.getChildren(), newList);
|
||||||
if (comments.get(i).getChildren() != null && comments.get(i).getChildren().size() > 0) {
|
comment.setExpanded(true);
|
||||||
expandChildren(comments.get(i).getChildren(), newList, position);
|
|
||||||
position = position + comments.get(i).getChildren().size();
|
|
||||||
}
|
|
||||||
comments.get(i).setExpanded(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -909,7 +905,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
|||||||
mVisibleComments.get(parentPosition).setHasReply(true);
|
mVisibleComments.get(parentPosition).setHasReply(true);
|
||||||
if (!mVisibleComments.get(parentPosition).isExpanded()) {
|
if (!mVisibleComments.get(parentPosition).isExpanded()) {
|
||||||
ArrayList<Comment> newList = new ArrayList<>();
|
ArrayList<Comment> newList = new ArrayList<>();
|
||||||
expandChildren(mVisibleComments.get(parentPosition).getChildren(), newList, 0);
|
expandChildren(mVisibleComments.get(parentPosition).getChildren(), newList);
|
||||||
mVisibleComments.get(parentPosition).setExpanded(true);
|
mVisibleComments.get(parentPosition).setExpanded(true);
|
||||||
mVisibleComments.addAll(parentPosition + 1, newList);
|
mVisibleComments.addAll(parentPosition + 1, newList);
|
||||||
if (mIsSingleCommentThreadMode) {
|
if (mIsSingleCommentThreadMode) {
|
||||||
@ -1572,7 +1568,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
|||||||
} else {
|
} else {
|
||||||
comment.setExpanded(true);
|
comment.setExpanded(true);
|
||||||
ArrayList<Comment> newList = new ArrayList<>();
|
ArrayList<Comment> newList = new ArrayList<>();
|
||||||
expandChildren(mVisibleComments.get(commentPosition).getChildren(), newList, 0);
|
expandChildren(mVisibleComments.get(commentPosition).getChildren(), newList);
|
||||||
mVisibleComments.get(commentPosition).setExpanded(true);
|
mVisibleComments.get(commentPosition).setExpanded(true);
|
||||||
mVisibleComments.addAll(commentPosition + 1, newList);
|
mVisibleComments.addAll(commentPosition + 1, newList);
|
||||||
|
|
||||||
@ -1740,7 +1736,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
|||||||
if (comment != null) {
|
if (comment != null) {
|
||||||
comment.setExpanded(true);
|
comment.setExpanded(true);
|
||||||
ArrayList<Comment> newList = new ArrayList<>();
|
ArrayList<Comment> newList = new ArrayList<>();
|
||||||
expandChildren(mVisibleComments.get(commentPosition).getChildren(), newList, 0);
|
expandChildren(mVisibleComments.get(commentPosition).getChildren(), newList);
|
||||||
mVisibleComments.get(commentPosition).setExpanded(true);
|
mVisibleComments.get(commentPosition).setExpanded(true);
|
||||||
mVisibleComments.addAll(commentPosition + 1, newList);
|
mVisibleComments.addAll(commentPosition + 1, newList);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user