mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-07 11:17:25 +01:00
Respecting subreddit recommended comment sort type is available.
This commit is contained in:
parent
966f41f3b6
commit
5787a1f7ca
@ -99,6 +99,8 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
|||||||
import ml.docilealligator.infinityforreddit.SaveThing;
|
import ml.docilealligator.infinityforreddit.SaveThing;
|
||||||
import ml.docilealligator.infinityforreddit.SortType;
|
import ml.docilealligator.infinityforreddit.SortType;
|
||||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||||
|
import ml.docilealligator.infinityforreddit.Subreddit.FetchSubredditData;
|
||||||
|
import ml.docilealligator.infinityforreddit.Subreddit.SubredditData;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.APIUtils;
|
import ml.docilealligator.infinityforreddit.Utils.APIUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.Utils;
|
import ml.docilealligator.infinityforreddit.Utils.Utils;
|
||||||
@ -154,6 +156,10 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
String mMessageFullname;
|
String mMessageFullname;
|
||||||
@State
|
@State
|
||||||
String mNewAccountName;
|
String mNewAccountName;
|
||||||
|
@State
|
||||||
|
String sortType;
|
||||||
|
@State
|
||||||
|
boolean mRespectSubredditRecommendedSortType;
|
||||||
@BindView(R.id.coordinator_layout_view_post_detail)
|
@BindView(R.id.coordinator_layout_view_post_detail)
|
||||||
CoordinatorLayout mCoordinatorLayout;
|
CoordinatorLayout mCoordinatorLayout;
|
||||||
@BindView(R.id.appbar_layout_view_post_detail_activity)
|
@BindView(R.id.appbar_layout_view_post_detail_activity)
|
||||||
@ -208,7 +214,6 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
private int orientation;
|
private int orientation;
|
||||||
private int postListPosition = -1;
|
private int postListPosition = -1;
|
||||||
private String mSingleCommentId;
|
private String mSingleCommentId;
|
||||||
private String sortType;
|
|
||||||
private boolean showToast = false;
|
private boolean showToast = false;
|
||||||
private boolean isSortingComments = false;
|
private boolean isSortingComments = false;
|
||||||
private boolean mVolumeKeysNavigateComments;
|
private boolean mVolumeKeysNavigateComments;
|
||||||
@ -216,7 +221,6 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
private boolean mLockFab;
|
private boolean mLockFab;
|
||||||
private boolean mSwipeUpToHideFab;
|
private boolean mSwipeUpToHideFab;
|
||||||
private boolean mExpandChildren;
|
private boolean mExpandChildren;
|
||||||
private boolean mRespectSubredditRecommendedSortType;
|
|
||||||
private int mWindowWidth;
|
private int mWindowWidth;
|
||||||
private LinearLayoutManager mLinearLayoutManager;
|
private LinearLayoutManager mLinearLayoutManager;
|
||||||
private CommentAndPostRecyclerViewAdapter mAdapter;
|
private CommentAndPostRecyclerViewAdapter mAdapter;
|
||||||
@ -297,7 +301,9 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
mLockFab = mSharedPreferences.getBoolean(SharedPreferencesUtils.LOCK_JUMP_TO_NEXT_TOP_LEVEL_COMMENT_BUTTON, false);
|
mLockFab = mSharedPreferences.getBoolean(SharedPreferencesUtils.LOCK_JUMP_TO_NEXT_TOP_LEVEL_COMMENT_BUTTON, false);
|
||||||
mSwipeUpToHideFab = mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_UP_TO_HIDE_JUMP_TO_NEXT_TOP_LEVEL_COMMENT_BUTTON, false);
|
mSwipeUpToHideFab = mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_UP_TO_HIDE_JUMP_TO_NEXT_TOP_LEVEL_COMMENT_BUTTON, false);
|
||||||
mExpandChildren = !mSharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_TOP_LEVEL_COMMENTS_FIRST, false);
|
mExpandChildren = !mSharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_TOP_LEVEL_COMMENTS_FIRST, false);
|
||||||
|
if (savedInstanceState == null) {
|
||||||
mRespectSubredditRecommendedSortType = mSharedPreferences.getBoolean(SharedPreferencesUtils.RESPECT_SUBREDDIT_RECOMMENDED_COMMENT_SORT_TYPE, false);
|
mRespectSubredditRecommendedSortType = mSharedPreferences.getBoolean(SharedPreferencesUtils.RESPECT_SUBREDDIT_RECOMMENDED_COMMENT_SORT_TYPE, false);
|
||||||
|
}
|
||||||
|
|
||||||
mGlide = Glide.with(this);
|
mGlide = Glide.with(this);
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
@ -503,9 +509,20 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
};
|
};
|
||||||
|
|
||||||
mSingleCommentId = getIntent().getStringExtra(EXTRA_SINGLE_COMMENT_ID);
|
mSingleCommentId = getIntent().getStringExtra(EXTRA_SINGLE_COMMENT_ID);
|
||||||
|
if (savedInstanceState == null) {
|
||||||
|
if (!mRespectSubredditRecommendedSortType) {
|
||||||
sortType = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_POST_COMMENT, SortType.Type.BEST.value.toUpperCase());
|
sortType = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_POST_COMMENT, SortType.Type.BEST.value.toUpperCase());
|
||||||
|
if (sortType != null) {
|
||||||
mToolbar.setTitle(new SortType(SortType.Type.valueOf(sortType)).getType().fullName);
|
mToolbar.setTitle(new SortType(SortType.Type.valueOf(sortType)).getType().fullName);
|
||||||
sortType = sortType.toLowerCase();
|
sortType = sortType.toLowerCase();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sortType != null) {
|
||||||
|
mToolbar.setTitle(new SortType(SortType.Type.valueOf(sortType.toUpperCase())).getType().fullName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
if (mSingleCommentId != null) {
|
if (mSingleCommentId != null) {
|
||||||
isSingleCommentThreadMode = true;
|
isSingleCommentThreadMode = true;
|
||||||
@ -638,7 +655,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void retryFetchingComments() {
|
public void retryFetchingComments() {
|
||||||
fetchComments(false);
|
fetchCommentsRespectRecommendedSort(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -652,13 +669,13 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
mRecyclerView.setAdapter(mAdapter);
|
mRecyclerView.setAdapter(mAdapter);
|
||||||
|
|
||||||
if (comments == null) {
|
if (comments == null) {
|
||||||
fetchComments(false);
|
fetchCommentsRespectRecommendedSort(false);
|
||||||
} else {
|
} else {
|
||||||
if (isRefreshing) {
|
if (isRefreshing) {
|
||||||
isRefreshing = false;
|
isRefreshing = false;
|
||||||
refresh(true, true);
|
refresh(true, true);
|
||||||
} else if (isFetchingComments) {
|
} else if (isFetchingComments) {
|
||||||
fetchComments(false);
|
fetchCommentsRespectRecommendedSort(false);
|
||||||
} else {
|
} else {
|
||||||
mAdapter.addComments(comments, hasMoreChildren);
|
mAdapter.addComments(comments, hasMoreChildren);
|
||||||
if (isLoadingMoreChildren) {
|
if (isLoadingMoreChildren) {
|
||||||
@ -802,7 +819,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void retryFetchingComments() {
|
public void retryFetchingComments() {
|
||||||
fetchComments(false);
|
fetchCommentsRespectRecommendedSort(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -895,6 +912,43 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fetchCommentsRespectRecommendedSort(boolean changeRefreshState, boolean checkSortState, String sortType) {
|
||||||
|
if (mRespectSubredditRecommendedSortType && mPost != null) {
|
||||||
|
FetchSubredditData.fetchSubredditData(mRetrofit, mPost.getSubredditName(),
|
||||||
|
new FetchSubredditData.FetchSubredditDataListener() {
|
||||||
|
@Override
|
||||||
|
public void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
|
||||||
|
if (subredditData.getSuggestedCommentSort() == null || subredditData.getSuggestedCommentSort().equals("null") || subredditData.getSuggestedCommentSort().equals("")) {
|
||||||
|
mRespectSubredditRecommendedSortType = false;
|
||||||
|
ViewPostDetailActivity.this.sortType = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_POST_COMMENT, SortType.Type.BEST.value.toUpperCase());
|
||||||
|
if (ViewPostDetailActivity.this.sortType != null) {
|
||||||
|
mToolbar.setTitle(new SortType(SortType.Type.valueOf(ViewPostDetailActivity.this.sortType)).getType().fullName);
|
||||||
|
ViewPostDetailActivity.this.sortType = ViewPostDetailActivity.this.sortType.toLowerCase();
|
||||||
|
}
|
||||||
|
fetchComments(changeRefreshState, checkSortState, sortType);
|
||||||
|
} else {
|
||||||
|
ViewPostDetailActivity.this.sortType = subredditData.getSuggestedCommentSort();
|
||||||
|
String sortTypeTemp = ViewPostDetailActivity.this.sortType.toLowerCase().substring(0, 1).toUpperCase() + ViewPostDetailActivity.this.sortType.substring(1);
|
||||||
|
mToolbar.setTitle(sortTypeTemp);
|
||||||
|
fetchComments(changeRefreshState, checkSortState, subredditData.getSuggestedCommentSort());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFetchSubredditDataFail() {
|
||||||
|
mRespectSubredditRecommendedSortType = false;
|
||||||
|
ViewPostDetailActivity.this.sortType = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_POST_COMMENT, SortType.Type.BEST.value.toUpperCase());
|
||||||
|
if (ViewPostDetailActivity.this.sortType != null) {
|
||||||
|
mToolbar.setTitle(new SortType(SortType.Type.valueOf(ViewPostDetailActivity.this.sortType)).getType().fullName);
|
||||||
|
ViewPostDetailActivity.this.sortType = ViewPostDetailActivity.this.sortType.toLowerCase();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
fetchComments(changeRefreshState, checkSortState, sortType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void fetchComments(boolean changeRefreshState, boolean checkSortState, String sortType) {
|
private void fetchComments(boolean changeRefreshState, boolean checkSortState, String sortType) {
|
||||||
isFetchingComments = true;
|
isFetchingComments = true;
|
||||||
mAdapter.setSingleComment(mSingleCommentId, isSingleCommentThreadMode);
|
mAdapter.setSingleComment(mSingleCommentId, isSingleCommentThreadMode);
|
||||||
@ -995,8 +1049,8 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fetchComments(boolean changeRefreshState) {
|
private void fetchCommentsRespectRecommendedSort(boolean changeRefreshState) {
|
||||||
fetchComments(changeRefreshState, true, sortType);
|
fetchCommentsRespectRecommendedSort(changeRefreshState, true, sortType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fetchMoreComments() {
|
void fetchMoreComments() {
|
||||||
@ -1036,11 +1090,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
mGlide.clear(mFetchPostInfoImageView);
|
mGlide.clear(mFetchPostInfoImageView);
|
||||||
|
|
||||||
if (fetchComments) {
|
if (fetchComments) {
|
||||||
if (!fetchPost) {
|
fetchCommentsRespectRecommendedSort(!fetchPost);
|
||||||
fetchComments(true);
|
|
||||||
} else {
|
|
||||||
fetchComments(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fetchPost) {
|
if (fetchPost) {
|
||||||
@ -1761,8 +1811,12 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
|||||||
if (children != null) {
|
if (children != null) {
|
||||||
children.clear();
|
children.clear();
|
||||||
}
|
}
|
||||||
fetchComments(false, false, sortType.getType().value);
|
this.sortType = sortType.getType().value;
|
||||||
|
if (!mRespectSubredditRecommendedSortType) {
|
||||||
mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_POST_COMMENT, sortType.getType().name()).apply();
|
mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_POST_COMMENT, sortType.getType().name()).apply();
|
||||||
|
}
|
||||||
|
mRespectSubredditRecommendedSortType = false;
|
||||||
|
fetchCommentsRespectRecommendedSort(false, false, sortType.getType().value);
|
||||||
|
|
||||||
mToolbar.setTitle(sortType.getType().fullName);
|
mToolbar.setTitle(sortType.getType().fullName);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user