mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 04:37:25 +01:00
Display single comment thread when clicking a comment from ViewUserDetailActivity instead of showing all the comments.
This commit is contained in:
parent
62dc889867
commit
478b85e67b
@ -56,6 +56,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
private static final int VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS = 5;
|
||||
private static final int VIEW_TYPE_IS_LOADING_MORE_COMMENTS = 6;
|
||||
private static final int VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED = 7;
|
||||
private static final int VIEW_TYPE_VIEW_ALL_COMMENTS = 8;
|
||||
|
||||
private Activity mActivity;
|
||||
private Retrofit mRetrofit;
|
||||
@ -68,6 +69,8 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
private ArrayList<CommentData> mVisibleComments;
|
||||
private String mSubredditNamePrefixed;
|
||||
private Locale mLocale;
|
||||
private String mSingleCommentId;
|
||||
private boolean mIsSingleCommentThreadMode;
|
||||
private CommentRecyclerViewAdapterCallback mCommentRecyclerViewAdapterCallback;
|
||||
private LoadSubredditIconAsyncTask mLoadSubredditIconAsyncTask;
|
||||
private boolean isInitiallyLoading;
|
||||
@ -82,8 +85,9 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
|
||||
CommentAndPostRecyclerViewAdapter(Activity activity, Retrofit retrofit, Retrofit oauthRetrofit,
|
||||
RedditDataRoomDatabase redditDataRoomDatabase, RequestManager glide,
|
||||
String accessToken, String accountName, Post post, String subredditNamePrefixed,
|
||||
Locale locale, LoadSubredditIconAsyncTask loadSubredditIconAsyncTask,
|
||||
String accessToken, String accountName, Post post, Locale locale,
|
||||
String singleCommentId, boolean isSingleCommentThreadMode,
|
||||
LoadSubredditIconAsyncTask loadSubredditIconAsyncTask,
|
||||
CommentRecyclerViewAdapterCallback commentRecyclerViewAdapterCallback) {
|
||||
mActivity = activity;
|
||||
mRetrofit = retrofit;
|
||||
@ -94,8 +98,10 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
mAccountName = accountName;
|
||||
mPost = post;
|
||||
mVisibleComments = new ArrayList<>();
|
||||
mSubredditNamePrefixed = subredditNamePrefixed;
|
||||
mSubredditNamePrefixed = post.getSubredditNamePrefixed();
|
||||
mLocale = locale;
|
||||
mSingleCommentId = singleCommentId;
|
||||
mIsSingleCommentThreadMode = isSingleCommentThreadMode;
|
||||
mLoadSubredditIconAsyncTask = loadSubredditIconAsyncTask;
|
||||
mCommentRecyclerViewAdapterCallback = commentRecyclerViewAdapterCallback;
|
||||
isInitiallyLoading = true;
|
||||
@ -122,19 +128,40 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
}
|
||||
}
|
||||
|
||||
if(position == mVisibleComments.size() + 1) {
|
||||
if(mHasMoreComments) {
|
||||
return VIEW_TYPE_IS_LOADING_MORE_COMMENTS;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED;
|
||||
if(mIsSingleCommentThreadMode) {
|
||||
if(position == 1) {
|
||||
return VIEW_TYPE_VIEW_ALL_COMMENTS;
|
||||
}
|
||||
}
|
||||
|
||||
CommentData comment = mVisibleComments.get(position - 1);
|
||||
if(!comment.isPlaceHolder()) {
|
||||
return VIEW_TYPE_COMMENT;
|
||||
if(position == mVisibleComments.size() + 2) {
|
||||
if(mHasMoreComments) {
|
||||
return VIEW_TYPE_IS_LOADING_MORE_COMMENTS;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
CommentData comment = mVisibleComments.get(position - 2);
|
||||
if(!comment.isPlaceHolder()) {
|
||||
return VIEW_TYPE_COMMENT;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS;
|
||||
}
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS;
|
||||
if(position == mVisibleComments.size() + 1) {
|
||||
if(mHasMoreComments) {
|
||||
return VIEW_TYPE_IS_LOADING_MORE_COMMENTS;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
CommentData comment = mVisibleComments.get(position - 1);
|
||||
if(!comment.isPlaceHolder()) {
|
||||
return VIEW_TYPE_COMMENT;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -156,8 +183,10 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
return new LoadMoreChildCommentsViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_load_more_comments_placeholder, parent, false));
|
||||
case VIEW_TYPE_IS_LOADING_MORE_COMMENTS:
|
||||
return new IsLoadingMoreCommentsViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_comment_footer_loading, parent, false));
|
||||
default:
|
||||
case VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED:
|
||||
return new LoadMoreCommentsFailedViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_comment_footer_error, parent, false));
|
||||
default:
|
||||
return new ViewAllCommentsViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view_all_comments, parent, false));
|
||||
}
|
||||
}
|
||||
|
||||
@ -415,7 +444,12 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
break;
|
||||
}
|
||||
} else if(holder.getItemViewType() == VIEW_TYPE_COMMENT) {
|
||||
CommentData comment = mVisibleComments.get(holder.getAdapterPosition() - 1);
|
||||
CommentData comment;
|
||||
if(mIsSingleCommentThreadMode) {
|
||||
comment = mVisibleComments.get(holder.getAdapterPosition() - 2);
|
||||
} else {
|
||||
comment = mVisibleComments.get(holder.getAdapterPosition() - 1);
|
||||
}
|
||||
|
||||
String authorPrefixed = "u/" + comment.getAuthor();
|
||||
((CommentViewHolder) holder).authorTextView.setText(authorPrefixed);
|
||||
@ -619,6 +653,11 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
}
|
||||
}
|
||||
|
||||
void setSingleComment(String singleCommentId, boolean isSingleCommentThreadMode) {
|
||||
mSingleCommentId = singleCommentId;
|
||||
mIsSingleCommentThreadMode = isSingleCommentThreadMode;
|
||||
}
|
||||
|
||||
void initiallyLoading() {
|
||||
if(mLoadSubredditIconAsyncTask != null) {
|
||||
mLoadSubredditIconAsyncTask.cancel(true);
|
||||
@ -627,7 +666,11 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
if(mVisibleComments.size() != 0) {
|
||||
int previousSize = mVisibleComments.size();
|
||||
mVisibleComments.clear();
|
||||
notifyItemRangeRemoved(1, previousSize);
|
||||
if(mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeRemoved(1, previousSize + 1);
|
||||
} else {
|
||||
notifyItemRangeRemoved(1, previousSize);
|
||||
}
|
||||
}
|
||||
|
||||
if(isInitiallyLoading || isInitiallyLoadingFailed || mVisibleComments.size() == 0) {
|
||||
@ -689,10 +732,18 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
}
|
||||
|
||||
if(mHasMoreComments || loadMoreCommentsFailed) {
|
||||
return mVisibleComments.size() + 2;
|
||||
if(mIsSingleCommentThreadMode) {
|
||||
return mVisibleComments.size() + 3;
|
||||
} else {
|
||||
return mVisibleComments.size() + 2;
|
||||
}
|
||||
}
|
||||
|
||||
return mVisibleComments.size() + 1;
|
||||
if(mIsSingleCommentThreadMode) {
|
||||
return mVisibleComments.size() + 2;
|
||||
} else {
|
||||
return mVisibleComments.size() + 1;
|
||||
}
|
||||
}
|
||||
|
||||
class PostDetailViewHolder extends RecyclerView.ViewHolder {
|
||||
@ -1050,7 +1101,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
mVisibleComments.get(getAdapterPosition() - 1).setLoadMoreChildrenFailed(false);
|
||||
placeholderTextView.setText(R.string.loading);
|
||||
|
||||
FetchComment.fetchMoreComment(mRetrofit, mSubredditNamePrefixed, parentComment.getMoreChildrenFullnames(),
|
||||
FetchComment.fetchMoreComment(mRetrofit, parentComment.getMoreChildrenFullnames(),
|
||||
parentComment.getMoreChildrenStartingIndex(), parentComment.getDepth() + 1, mLocale,
|
||||
new FetchComment.FetchMoreCommentListener() {
|
||||
@Override
|
||||
@ -1238,4 +1289,17 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
retryButton.setOnClickListener(view -> mCommentRecyclerViewAdapterCallback.retryFetchingMoreComments());
|
||||
}
|
||||
}
|
||||
|
||||
class ViewAllCommentsViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
ViewAllCommentsViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
|
||||
itemView.setOnClickListener(view -> {
|
||||
if(mActivity != null && mActivity instanceof ViewPostDetailActivity) {
|
||||
((ViewPostDetailActivity) mActivity).changeToSingleThreadMode();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -196,6 +196,7 @@ class CommentsListingRecyclerViewAdapter extends PagedListAdapter<CommentData, R
|
||||
linearLayout.setOnClickListener(view -> {
|
||||
Intent intent = new Intent(mContext, ViewPostDetailActivity.class);
|
||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, getItem(getAdapterPosition()).getLinkId());
|
||||
intent.putExtra(ViewPostDetailActivity.EXTRA_SINGLE_COMMENT_ID, getItem(getAdapterPosition()).getId());
|
||||
mContext.startActivity(intent);
|
||||
});
|
||||
|
||||
|
@ -23,10 +23,15 @@ class FetchComment {
|
||||
void onFetchMoreCommentFailed();
|
||||
}
|
||||
|
||||
static void fetchComments(Retrofit retrofit, String subredditNamePrefixed, String article,
|
||||
static void fetchComments(Retrofit retrofit, String article, String commentId,
|
||||
Locale locale, FetchCommentListener fetchCommentListener) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> comments = api.getComments(subredditNamePrefixed, article);
|
||||
Call<String> comments;
|
||||
if(commentId == null) {
|
||||
comments = api.getPostAndCommentsById(article);
|
||||
} else {
|
||||
comments = api.getPostAndCommentsSingleThreadById(article, commentId);
|
||||
}
|
||||
comments.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
@ -60,9 +65,8 @@ class FetchComment {
|
||||
});
|
||||
}
|
||||
|
||||
static void fetchMoreComment(Retrofit retrofit, String subredditNamePrefixed,
|
||||
ArrayList<String> allChildren, int startingIndex, int depth,
|
||||
Locale locale, FetchMoreCommentListener fetchMoreCommentListener) {
|
||||
static void fetchMoreComment(Retrofit retrofit, ArrayList<String> allChildren, int startingIndex,
|
||||
int depth, Locale locale, FetchMoreCommentListener fetchMoreCommentListener) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for(int i = 0; i < 100; i++) {
|
||||
if(allChildren.size() <= startingIndex + i) {
|
||||
@ -79,10 +83,10 @@ class FetchComment {
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
|
||||
Call<String> moreComments = api.getInfo(subredditNamePrefixed, stringBuilder.toString());
|
||||
Call<String> moreComments = api.getInfo(stringBuilder.toString());
|
||||
moreComments.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(Call<String> call, Response<String> response) {
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParseComment.parseMoreComment(response.body(), new ArrayList<>(), locale,
|
||||
depth, new ParseComment.ParseCommentListener() {
|
||||
|
@ -21,10 +21,6 @@ public interface RedditAPI {
|
||||
@POST("api/v1/access_token")
|
||||
Call<String> getAccessToken(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
||||
|
||||
@GET("{subredditNamePrefixed}/comments/{article}.json?&raw_json=1")
|
||||
Call<String> getComments(@Path("subredditNamePrefixed") String subredditNamePrefixed,
|
||||
@Path("article") String article);
|
||||
|
||||
@GET("r/{subredditName}/about.json?raw_json=1")
|
||||
Call<String> getSubredditData(@Path("subredditName") String subredditName);
|
||||
|
||||
@ -74,8 +70,8 @@ public interface RedditAPI {
|
||||
@POST("api/subscribe")
|
||||
Call<String> subredditSubscription(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
||||
|
||||
@GET("{subredditNamePrefixed}/api/info.json?raw_json=1")
|
||||
Call<String> getInfo(@Path("subredditNamePrefixed") String subredditNamePrefixed, @Query("id") String id);
|
||||
@GET("/api/info.json?raw_json=1")
|
||||
Call<String> getInfo(@Query("id") String id);
|
||||
|
||||
@GET("subreddits/search.json?raw_json=1&include_over_18=on")
|
||||
Call<String> searchSubreddits(@Query("q") String subredditName, @Query("after") String after, @Query("sort") String sort);
|
||||
@ -120,9 +116,16 @@ public interface RedditAPI {
|
||||
@GET("/r/{subredditName}/about/rules.json?raw_json=1")
|
||||
Call<String> getRules(@Path("subredditName") String subredditName);
|
||||
|
||||
@GET("/comments/{id}/placeholder/{singleCommentId}.json?context=8&raw_json=1")
|
||||
Call<String> getPostAndCommentsSingleThreadByIdOauth(@Path("id") String id, @Path("singleCommentId") String singleCommentId,
|
||||
@HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("/comments/{id}.json?raw_json=1")
|
||||
Call<String> getPostAndCommentsByIdOauth(@Path("id") String id, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("/comments/{id}/placeholder/{singleCommentId}.json?context=8&raw_json=1")
|
||||
Call<String> getPostAndCommentsSingleThreadById(@Path("id") String id, @Path("singleCommentId") String singleCommentId);
|
||||
|
||||
@GET("/comments/{id}.json?raw_json=1")
|
||||
Call<String> getPostAndCommentsById(@Path("id") String id);
|
||||
|
||||
|
@ -59,6 +59,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
static final String EXTRA_POST_DATA = "EPD";
|
||||
static final String EXTRA_POST_LIST_POSITION = "EPLI";
|
||||
static final String EXTRA_POST_ID = "EPI";
|
||||
static final String EXTRA_SINGLE_COMMENT_ID = "ESCI";
|
||||
|
||||
private static final int EDIT_POST_REQUEST_CODE = 2;
|
||||
static final int EDIT_COMMENT_REQUEST_CODE = 3;
|
||||
@ -69,6 +70,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
|
||||
private int orientation;
|
||||
private int postListPosition = -1;
|
||||
private String mSingleCommentId;
|
||||
|
||||
@State
|
||||
boolean mNullAccessToken = false;
|
||||
@ -83,6 +85,8 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
@State
|
||||
boolean isRefreshing = false;
|
||||
@State
|
||||
boolean isSingleCommentThreadMode = false;
|
||||
@State
|
||||
ArrayList<CommentData> comments;
|
||||
@State
|
||||
ArrayList<String> children;
|
||||
@ -186,6 +190,11 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
mLinearLayoutManager = new LinearLayoutManager(this);
|
||||
mRecyclerView.setLayoutManager(mLinearLayoutManager);
|
||||
|
||||
mSingleCommentId = getIntent().hasExtra(EXTRA_SINGLE_COMMENT_ID) ? getIntent().getExtras().getString(EXTRA_SINGLE_COMMENT_ID) : null;
|
||||
if(savedInstanceState == null && mSingleCommentId != null) {
|
||||
isSingleCommentThreadMode = true;
|
||||
}
|
||||
|
||||
orientation = getResources().getConfiguration().orientation;
|
||||
|
||||
if(!mNullAccessToken && mAccessToken == null) {
|
||||
@ -246,7 +255,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
}
|
||||
mAdapter = new CommentAndPostRecyclerViewAdapter(ViewPostDetailActivity.this, mRetrofit,
|
||||
mOauthRetrofit, mRedditDataRoomDatabase, mGlide, mAccessToken, mAccountName, mPost,
|
||||
mPost.getSubredditNamePrefixed(), mLocale, mLoadSubredditIconAsyncTask,
|
||||
mLocale, mSingleCommentId, isSingleCommentThreadMode, mLoadSubredditIconAsyncTask,
|
||||
new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
||||
@Override
|
||||
public void updatePost(Post post) {
|
||||
@ -264,11 +273,11 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
|
||||
if(comments == null) {
|
||||
fetchComments();
|
||||
fetchComments(false);
|
||||
} else {
|
||||
if(isRefreshing) {
|
||||
isRefreshing = false;
|
||||
refresh(false);
|
||||
refresh(true, true);
|
||||
} else {
|
||||
mAdapter.addComments(comments, hasMoreChildren);
|
||||
if(isLoadingMoreChildren) {
|
||||
@ -288,9 +297,19 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
|
||||
Call<String> postAndComments;
|
||||
if(mAccessToken == null) {
|
||||
postAndComments = mRetrofit.create(RedditAPI.class).getPostAndCommentsById(subredditId);
|
||||
if(isSingleCommentThreadMode && mSingleCommentId != null) {
|
||||
postAndComments = mRetrofit.create(RedditAPI.class).getPostAndCommentsSingleThreadById(subredditId, mSingleCommentId);
|
||||
} else {
|
||||
postAndComments = mRetrofit.create(RedditAPI.class).getPostAndCommentsById(subredditId);
|
||||
}
|
||||
} else {
|
||||
postAndComments = mOauthRetrofit.create(RedditAPI.class).getPostAndCommentsByIdOauth(subredditId, RedditUtils.getOAuthHeader(mAccessToken));
|
||||
if(isSingleCommentThreadMode && mSingleCommentId != null) {
|
||||
postAndComments = mOauthRetrofit.create(RedditAPI.class).getPostAndCommentsSingleThreadByIdOauth(subredditId,
|
||||
mSingleCommentId, RedditUtils.getOAuthHeader(mAccessToken));
|
||||
} else {
|
||||
postAndComments = mOauthRetrofit.create(RedditAPI.class).getPostAndCommentsByIdOauth(subredditId,
|
||||
RedditUtils.getOAuthHeader(mAccessToken));
|
||||
}
|
||||
}
|
||||
postAndComments.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
@ -312,7 +331,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
|
||||
mAdapter = new CommentAndPostRecyclerViewAdapter(ViewPostDetailActivity.this, mRetrofit,
|
||||
mOauthRetrofit, mRedditDataRoomDatabase, mGlide, mAccessToken, mAccountName, mPost,
|
||||
mPost.getSubredditNamePrefixed(), mLocale, mLoadSubredditIconAsyncTask,
|
||||
mLocale, mSingleCommentId, isSingleCommentThreadMode, mLoadSubredditIconAsyncTask,
|
||||
new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
||||
@Override
|
||||
public void updatePost(Post post) {
|
||||
@ -382,11 +401,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
});
|
||||
}
|
||||
|
||||
private void fetchComments() {
|
||||
private void fetchComments(boolean changeRefreshState) {
|
||||
mAdapter.setSingleComment(mSingleCommentId, isSingleCommentThreadMode);
|
||||
mAdapter.initiallyLoading();
|
||||
String commentId = null;
|
||||
if(isSingleCommentThreadMode) {
|
||||
commentId = mSingleCommentId;
|
||||
}
|
||||
|
||||
FetchComment.fetchComments(mRetrofit, mPost.getSubredditNamePrefixed(), mPost.getId(),
|
||||
mLocale, new FetchComment.FetchCommentListener() {
|
||||
FetchComment.fetchComments(mRetrofit, mPost.getId(), commentId, mLocale, new FetchComment.FetchCommentListener() {
|
||||
@Override
|
||||
public void onFetchCommentSuccess(ArrayList<CommentData> expandedComments,
|
||||
String parentId, ArrayList<String> children) {
|
||||
@ -414,11 +437,17 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
}
|
||||
});
|
||||
}
|
||||
if(changeRefreshState) {
|
||||
isRefreshing = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFetchCommentFailed() {
|
||||
mAdapter.initiallyLoadCommentsFailed();
|
||||
if(changeRefreshState) {
|
||||
isRefreshing = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -429,7 +458,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
}
|
||||
|
||||
isLoadingMoreChildren = true;
|
||||
FetchComment.fetchMoreComment(mRetrofit, mPost.getSubredditNamePrefixed(), children, mChildrenStartingIndex,
|
||||
FetchComment.fetchMoreComment(mRetrofit, children, mChildrenStartingIndex,
|
||||
0, mLocale, new FetchComment.FetchMoreCommentListener() {
|
||||
@Override
|
||||
public void onFetchMoreCommentSuccess(ArrayList<CommentData> expandedComments, int childrenStartingIndex) {
|
||||
@ -449,7 +478,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
});
|
||||
}
|
||||
|
||||
private void refresh(boolean onlyRefreshPost) {
|
||||
private void refresh(boolean fetchPost, boolean fetchComments) {
|
||||
if(!isRefreshing) {
|
||||
isRefreshing = true;
|
||||
mChildrenStartingIndex = 0;
|
||||
@ -457,32 +486,38 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
||||
mGlide.clear(mFetchPostInfoImageView);
|
||||
|
||||
if(!onlyRefreshPost) {
|
||||
fetchComments();
|
||||
if(fetchComments) {
|
||||
if(!fetchPost) {
|
||||
fetchComments(true);
|
||||
} else {
|
||||
fetchComments(false);
|
||||
}
|
||||
}
|
||||
|
||||
Retrofit retrofit;
|
||||
if(mAccessToken == null) {
|
||||
retrofit = mRetrofit;
|
||||
} else {
|
||||
retrofit = mOauthRetrofit;
|
||||
}
|
||||
FetchPost.fetchPost(retrofit, mPost.getId(), mAccessToken, mLocale,
|
||||
new FetchPost.FetchPostListener() {
|
||||
@Override
|
||||
public void fetchPostSuccess(Post post) {
|
||||
mPost = post;
|
||||
mAdapter.updatePost(mPost);
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
isRefreshing = false;
|
||||
}
|
||||
if(fetchPost) {
|
||||
Retrofit retrofit;
|
||||
if(mAccessToken == null) {
|
||||
retrofit = mRetrofit;
|
||||
} else {
|
||||
retrofit = mOauthRetrofit;
|
||||
}
|
||||
FetchPost.fetchPost(retrofit, mPost.getId(), mAccessToken, mLocale,
|
||||
new FetchPost.FetchPostListener() {
|
||||
@Override
|
||||
public void fetchPostSuccess(Post post) {
|
||||
mPost = post;
|
||||
mAdapter.updatePost(mPost);
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
isRefreshing = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchPostFailed() {
|
||||
showMessage(R.string.refresh_post_failed);
|
||||
isRefreshing = false;
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void fetchPostFailed() {
|
||||
showMessage(R.string.refresh_post_failed);
|
||||
isRefreshing = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -510,7 +545,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
refresh(true);
|
||||
refresh(true, false);
|
||||
showMessage(R.string.mark_nsfw_success);
|
||||
} else {
|
||||
showMessage(R.string.mark_nsfw_failed);
|
||||
@ -532,7 +567,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
refresh(true);
|
||||
refresh(true, false);
|
||||
showMessage(R.string.unmark_nsfw_success);
|
||||
} else {
|
||||
showMessage(R.string.unmark_nsfw_failed);
|
||||
@ -554,7 +589,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
refresh(true);
|
||||
refresh(true, false);
|
||||
showMessage(R.string.mark_spoiler_success);
|
||||
} else {
|
||||
showMessage(R.string.mark_spoiler_failed);
|
||||
@ -576,7 +611,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
refresh(true);
|
||||
refresh(true, false);
|
||||
showMessage(R.string.unmark_spoiler_success);
|
||||
} else {
|
||||
showMessage(R.string.unmark_spoiler_failed);
|
||||
@ -611,6 +646,12 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
.show();
|
||||
}
|
||||
|
||||
void changeToSingleThreadMode() {
|
||||
isSingleCommentThreadMode = false;
|
||||
mSingleCommentId = null;
|
||||
refresh(false, true);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onPostUpdateEvent(PostUpdateEventToDetailActivity event) {
|
||||
if(mPost.getId().equals(event.postId)) {
|
||||
@ -654,7 +695,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_refresh_view_post_detail_activity:
|
||||
refresh(false);
|
||||
refresh(true, true);
|
||||
return true;
|
||||
case R.id.action_comment_view_post_detail_activity:
|
||||
if(mAccessToken == null) {
|
||||
@ -746,7 +787,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
}
|
||||
} else if(requestCode == EDIT_POST_REQUEST_CODE) {
|
||||
if(resultCode == RESULT_OK) {
|
||||
refresh(true);
|
||||
refresh(true, false);
|
||||
}
|
||||
} else if(requestCode == EDIT_COMMENT_REQUEST_CODE) {
|
||||
if(resultCode == RESULT_OK) {
|
||||
@ -794,7 +835,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
refresh(true);
|
||||
refresh(true, false);
|
||||
showMessage(R.string.update_flair_success);
|
||||
} else {
|
||||
showMessage(R.string.update_flair_failed);
|
||||
|
17
app/src/main/res/layout/item_view_all_comments.xml
Normal file
17
app/src/main/res/layout/item_view_all_comments.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/view_all_comments"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/colorAccent" />
|
||||
|
||||
</LinearLayout>
|
@ -217,6 +217,5 @@
|
||||
<string name="edit_flair">Edit Flair</string>
|
||||
<string name="only_allow_64_chars">Only allow less than 64 characters</string>
|
||||
|
||||
<!-- TODO: Remove or change this placeholder text -->
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
<string name="view_all_comments">Click here to browse all comments</string>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user