mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-06 18:57:26 +01:00
Fetch more comments button now works!
Signed-off-by: Balazs Toldi <balazs@toldi.eu>
This commit is contained in:
parent
ec6770a904
commit
350a37d7a7
@ -609,69 +609,47 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
mVisibleComments.get(commentPosition).setLoadMoreChildrenFailed(false);
|
||||
((LoadMoreChildCommentsViewHolder) holder).placeholderTextView.setText(R.string.loading);
|
||||
|
||||
Retrofit retrofit = mAccessToken == null ? mRetrofit : mOauthRetrofit;
|
||||
Retrofit retrofit = mRetrofit;
|
||||
SortType.Type sortType = mCommentRecyclerViewAdapterCallback.getSortType();
|
||||
FetchComment.fetchMoreComment(mExecutor, new Handler(), retrofit, mAccessToken,
|
||||
parentComment.getMoreChildrenIds(),
|
||||
mExpandChildren, mPost.getFullName(), sortType, new FetchComment.FetchMoreCommentListener() {
|
||||
FetchComment.fetchComments(mExecutor, new Handler(), retrofit, mAccessToken,
|
||||
mPost.getId(), parentComment.getId(), sortType,
|
||||
mExpandChildren, 1, new FetchComment.FetchCommentListener() {
|
||||
@Override
|
||||
public void onFetchMoreCommentSuccess(ArrayList<Comment> topLevelComments,
|
||||
ArrayList<Comment> expandedComments,
|
||||
ArrayList<Integer> moreChildrenIds) {
|
||||
public void onFetchCommentSuccess(ArrayList<Comment> expandedComments, Integer parentId, ArrayList<Integer> children) {
|
||||
if (mVisibleComments.size() > parentPosition
|
||||
&& parentComment.getFullName().equals(mVisibleComments.get(parentPosition).getFullName())) {
|
||||
&& parentComment.getId() == mVisibleComments.get(parentPosition).getId()) {
|
||||
if (mVisibleComments.get(parentPosition).isExpanded()) {
|
||||
if (!moreChildrenIds.isEmpty()) {
|
||||
mVisibleComments.get(parentPosition).setMoreChildrenIds(moreChildrenIds);
|
||||
mVisibleComments.get(parentPosition).getChildren().get(mVisibleComments.get(parentPosition).getChildren().size() - 1)
|
||||
.setLoadingMoreChildren(false);
|
||||
mVisibleComments.get(parentPosition).getChildren().get(mVisibleComments.get(parentPosition).getChildren().size() - 1)
|
||||
.setLoadMoreChildrenFailed(false);
|
||||
|
||||
int placeholderPosition = findLoadMoreCommentsPlaceholderPosition(parentComment.getFullName(), commentPosition);
|
||||
if (placeholderPosition != -1) {
|
||||
mVisibleComments.get(placeholderPosition).setLoadingMoreChildren(false);
|
||||
mVisibleComments.get(placeholderPosition).setLoadMoreChildrenFailed(false);
|
||||
((LoadMoreChildCommentsViewHolder) holder).placeholderTextView.setText(R.string.comment_load_more_comments);
|
||||
mVisibleComments.get(parentPosition).getChildren()
|
||||
.remove(mVisibleComments.get(parentPosition).getChildren().size() - 1);
|
||||
// mVisibleComments.get(parentPosition).removeMoreChildrenIds();
|
||||
|
||||
mVisibleComments.addAll(placeholderPosition, expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(placeholderPosition + 1, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition, expandedComments.size());
|
||||
}
|
||||
int placeholderPosition = findLoadMoreCommentsPlaceholderPosition(parentComment.getFullName(), commentPosition);
|
||||
if (placeholderPosition != -1) {
|
||||
mVisibleComments.remove(placeholderPosition);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRemoved(placeholderPosition + 1);
|
||||
} else {
|
||||
notifyItemRemoved(placeholderPosition);
|
||||
}
|
||||
} else {
|
||||
mVisibleComments.get(parentPosition).getChildren()
|
||||
.remove(mVisibleComments.get(parentPosition).getChildren().size() - 1);
|
||||
mVisibleComments.get(parentPosition).removeMoreChildrenIds();
|
||||
|
||||
int placeholderPosition = findLoadMoreCommentsPlaceholderPosition(parentComment.getFullName(), commentPosition);
|
||||
if (placeholderPosition != -1) {
|
||||
mVisibleComments.remove(placeholderPosition);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRemoved(placeholderPosition + 1);
|
||||
} else {
|
||||
notifyItemRemoved(placeholderPosition);
|
||||
}
|
||||
|
||||
mVisibleComments.addAll(placeholderPosition, expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(placeholderPosition + 1, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition, expandedComments.size());
|
||||
}
|
||||
mVisibleComments.addAll(placeholderPosition, expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(placeholderPosition + 1, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition, expandedComments.size());
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
if (mVisibleComments.get(parentPosition).hasReply() && moreChildrenIds.isEmpty()) {
|
||||
if (mVisibleComments.get(parentPosition).hasReply()) {
|
||||
mVisibleComments.get(parentPosition).getChildren()
|
||||
.remove(mVisibleComments.get(parentPosition).getChildren().size() - 1);
|
||||
mVisibleComments.get(parentPosition).removeMoreChildrenIds();
|
||||
}
|
||||
}
|
||||
|
||||
mVisibleComments.get(parentPosition).addChildren(topLevelComments);
|
||||
mVisibleComments.get(parentPosition).addChildren(expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(parentPosition + 1);
|
||||
} else {
|
||||
@ -702,7 +680,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
.setLoadingMoreChildren(false);
|
||||
mVisibleComments.get(i).getChildren().get(mVisibleComments.get(i).getChildren().size() - 1)
|
||||
.setLoadMoreChildrenFailed(false);
|
||||
mVisibleComments.get(i).addChildren(topLevelComments);
|
||||
mVisibleComments.get(i).addChildren(expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(i + 1);
|
||||
} else {
|
||||
@ -716,7 +694,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFetchMoreCommentFailed() {
|
||||
public void onFetchCommentFailed() {
|
||||
int currentParentPosition = findCommentPosition(parentComment.getFullName(), parentPosition);
|
||||
if (currentParentPosition == -1) {
|
||||
// note: returning here is probably a mistake, because
|
||||
|
@ -10,8 +10,6 @@ import java.util.concurrent.Executor;
|
||||
|
||||
import eu.toldi.infinityforlemmy.SortType;
|
||||
import eu.toldi.infinityforlemmy.apis.LemmyAPI;
|
||||
import eu.toldi.infinityforlemmy.apis.RedditAPI;
|
||||
import eu.toldi.infinityforlemmy.utils.APIUtils;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
@ -60,29 +58,14 @@ public class FetchComment {
|
||||
}
|
||||
|
||||
public static void fetchMoreComment(Executor executor, Handler handler, Retrofit retrofit,
|
||||
@Nullable String accessToken,
|
||||
ArrayList<Integer> allChildren,
|
||||
boolean expandChildren, String postFullName,
|
||||
SortType.Type sortType,
|
||||
FetchMoreCommentListener fetchMoreCommentListener) {
|
||||
if (allChildren == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String childrenIds = "";
|
||||
|
||||
if (childrenIds.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
@Nullable String accessToken, int article,
|
||||
int commentId, SortType.Type sortType, boolean expandChildren,
|
||||
Integer page, FetchMoreCommentListener fetchMoreCommentListener) {
|
||||
LemmyAPI api = retrofit.create(LemmyAPI.class);
|
||||
Call<String> moreComments;
|
||||
if (accessToken == null) {
|
||||
moreComments = api.moreChildren(postFullName, childrenIds, sortType);
|
||||
} else {
|
||||
moreComments = api.moreChildrenOauth(postFullName, childrenIds,
|
||||
sortType, APIUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
|
||||
moreComments = api.getComments("All", sortType.value, 8, page, 25, null, null, article, commentId, false, accessToken);
|
||||
|
||||
|
||||
moreComments.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
|
@ -48,6 +48,9 @@ public class ParseComment {
|
||||
topLevelComments.add(singleComment);
|
||||
}
|
||||
}
|
||||
Comment parentComment = orderedComments.get(0);
|
||||
if (parentComment.getDepth() == 0)
|
||||
parentComment = null;
|
||||
|
||||
for (int i = orderedComments.size() - 1; i >= 0; i--) {
|
||||
Comment c = orderedComments.get(i);
|
||||
@ -67,6 +70,14 @@ public class ParseComment {
|
||||
|
||||
expandChildren(newComments, expandedNewComments, expandChildren);
|
||||
|
||||
if (topLevelComments.isEmpty() && !parsedComments.isEmpty() && parentComment != null) {
|
||||
for (int i = orderedComments.size() - 1; i >= 0; i--) {
|
||||
Comment c = orderedComments.get(i);
|
||||
if (c.getDepth() > parentComment.getDepth())
|
||||
expandedNewComments.add(c);
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<Comment> commentData;
|
||||
if (expandChildren) {
|
||||
commentData = expandedNewComments;
|
||||
@ -86,8 +97,7 @@ public class ParseComment {
|
||||
ParseCommentListener parseCommentListener) {
|
||||
executor.execute(() -> {
|
||||
try {
|
||||
JSONArray childrenArray = new JSONObject(response).getJSONObject(JSONUtils.JSON_KEY)
|
||||
.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.THINGS_KEY);
|
||||
JSONArray childrenArray = new JSONObject(response).getJSONArray("comments");
|
||||
|
||||
ArrayList<Comment> newComments = new ArrayList<>();
|
||||
ArrayList<Comment> expandedNewComments = new ArrayList<>();
|
||||
@ -221,7 +231,7 @@ public class ParseComment {
|
||||
}
|
||||
}
|
||||
|
||||
private static int getChildCount(Comment comment) {
|
||||
public static int getChildCount(Comment comment) {
|
||||
if (comment.getChildren() == null) {
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user