From 70fcc671d8d30bf9e8c467130b65b736c51a8fa6 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Thu, 21 Feb 2019 08:41:51 +0800 Subject: Load comments of comments one more time, just like parent-level comments. --- .../CommentMultiLevelRecyclerViewAdapter.java | 13 +++---- .../infinityforreddit/FetchComment.java | 41 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 9 deletions(-) (limited to 'app/src/main/java') diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentMultiLevelRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentMultiLevelRecyclerViewAdapter.java index 77adf5f1..84186625 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentMultiLevelRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentMultiLevelRecyclerViewAdapter.java @@ -9,7 +9,6 @@ import android.support.annotation.NonNull; import android.support.customtabs.CustomTabsIntent; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -111,15 +110,11 @@ class CommentMultiLevelRecyclerViewAdapter extends MultiLevelAdapter { setExpandButton(((CommentViewHolder) holder).expandButton, commentItem.isExpanded()); } else { ((CommentViewHolder) holder).loadMoreCommentsProgressBar.setVisibility(View.VISIBLE); - FetchComment.fetchComment(mRetrofit, subredditNamePrefixed, article, commentItem.getId(), - locale, false, commentItem.getDepth(), new FetchComment.FetchCommentListener() { + FetchComment.fetchAllComment(mRetrofit, subredditNamePrefixed, article, commentItem.getId(), + locale, false, commentItem.getDepth(), new FetchComment.FetchAllCommentListener() { @Override - public void onFetchCommentSuccess(List commentData, - String parentId, String commaSeparatedChildren) { + public void onFetchAllCommentSuccess(List commentData) { commentItem.addChildren((List) commentData); - for (RecyclerViewItem r : (List) commentData) { - Log.i("asdfasdfasd", Integer.toString(r.getLevel())); - } ((CommentViewHolder) holder).loadMoreCommentsProgressBar .setVisibility(View.GONE); mMultiLevelRecyclerView.toggleItemsGroup(holder.getAdapterPosition()); @@ -128,7 +123,7 @@ class CommentMultiLevelRecyclerViewAdapter extends MultiLevelAdapter { } @Override - public void onFetchCommentFailed() { + public void onFetchAllCommentFailed() { ((CommentViewHolder) holder).loadMoreCommentsProgressBar .setVisibility(View.GONE); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java index 7faf76fb..acd49008 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java @@ -24,6 +24,11 @@ class FetchComment { void onFetchMoreCommentFailed(); } + interface FetchAllCommentListener { + void onFetchAllCommentSuccess(List commentData); + void onFetchAllCommentFailed(); + } + static void fetchComment(Retrofit retrofit, String subredditNamePrefixed, String article, String comment, Locale locale, boolean isPost, int parentDepth, final FetchCommentListener fetchCommentListener) { @@ -126,4 +131,40 @@ class FetchComment { } }); } + + static void fetchAllComment(Retrofit retrofit, String subredditNamePrefixed, String article, + String comment, Locale locale, boolean isPost, int parentDepth, + FetchAllCommentListener fetchAllCommentListener) { + fetchComment(retrofit, subredditNamePrefixed, article, comment, locale, isPost, parentDepth, + new FetchCommentListener() { + @Override + public void onFetchCommentSuccess(List commentData, String parentId, String commaSeparatedChildren) { + if(!commaSeparatedChildren.equals("")) { + fetchMoreComment(retrofit, subredditNamePrefixed, parentId, commaSeparatedChildren, + locale, new FetchMoreCommentListener() { + @Override + public void onFetchMoreCommentSuccess(List moreCommentData) { + ((ArrayList)commentData).addAll((ArrayList) moreCommentData); + fetchAllCommentListener.onFetchAllCommentSuccess(commentData); + } + + @Override + public void onFetchMoreCommentFailed() { + Log.i("fetch more comment", "error"); + fetchAllCommentListener.onFetchAllCommentFailed(); + } + }); + } else { + fetchAllCommentListener.onFetchAllCommentSuccess(commentData); + } + } + + @Override + public void onFetchCommentFailed() { + Log.i("fetch comment", "error"); + fetchAllCommentListener.onFetchAllCommentFailed(); + } + }); + + } } -- cgit v1.2.3