aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2020-02-01 14:36:43 +0000
committerAlex Ning <chineseperson5@gmail.com>2020-02-01 14:36:43 +0000
commit5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3 (patch)
tree2986dbc9dd716c8219a18cca464c2ee7ee096323 /app/src
parent9dc596b9076963d48a9ac7d08b965cb540f9983f (diff)
downloadinfinity-for-reddit-5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3.tar
infinity-for-reddit-5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3.tar.gz
infinity-for-reddit-5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3.tar.bz2
infinity-for-reddit-5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3.tar.lz
infinity-for-reddit-5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3.tar.xz
infinity-for-reddit-5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3.tar.zst
infinity-for-reddit-5d74aa454860c2e0a04d3d8a6c96a14a53e66ad3.zip
Showing top-level comments at first is available.
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java14
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java7
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java11
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java23
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java1
-rw-r--r--app/src/main/res/values/strings.xml1
-rw-r--r--app/src/main/res/xml/main_preferences.xml7
7 files changed, 43 insertions, 21 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java
index e0c48770..e516cdfc 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java
@@ -175,6 +175,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
private boolean mIsSmoothScrolling = false;
private boolean mLockFab;
private boolean mSwipeUpToHideFab;
+ private boolean mExpandChildren;
private LinearLayoutManager mLinearLayoutManager;
private CommentAndPostRecyclerViewAdapter mAdapter;
private RecyclerView.SmoothScroller mSmoothScroller;
@@ -257,6 +258,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
mVolumeKeysNavigateComments = mSharedPreferences.getBoolean(SharedPreferencesUtils.VOLUME_KEYS_NAVIGATE_COMMENTS, 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);
+ mExpandChildren = !mSharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_TOP_LEVEL_COMMENTS_FIRST, false);
mGlide = Glide.with(this);
mLocale = getResources().getConfiguration().locale;
@@ -494,7 +496,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
mAdapter = new CommentAndPostRecyclerViewAdapter(ViewPostDetailActivity.this, mRetrofit,
mOauthRetrofit, mRedditDataRoomDatabase, mGlide, mAccessToken, mAccountName, mPost,
mLocale, mSingleCommentId, isSingleCommentThreadMode, mNeedBlurNsfw, mNeedBlurSpoiler,
- mVoteButtonsOnTheRight, mShowElapsedTime,
+ mVoteButtonsOnTheRight, mShowElapsedTime, mExpandChildren,
new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
@Override
public void updatePost(Post post) {
@@ -617,7 +619,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
mRetrofit, mOauthRetrofit, mRedditDataRoomDatabase, mGlide,
mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId,
isSingleCommentThreadMode, mNeedBlurNsfw, mNeedBlurSpoiler,
- mVoteButtonsOnTheRight, mShowElapsedTime,
+ mVoteButtonsOnTheRight, mShowElapsedTime, mExpandChildren,
new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
@Override
public void updatePost(Post post) {
@@ -640,7 +642,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
mRecyclerView.setAdapter(mAdapter);
ParseComment.parseComment(response.body(), new ArrayList<>(), mLocale,
- new ParseComment.ParseCommentListener() {
+ mExpandChildren, new ParseComment.ParseCommentListener() {
@Override
public void onParseCommentSuccess(ArrayList<CommentData> expandedComments, String parentId, ArrayList<String> moreChildrenFullnames) {
ViewPostDetailActivity.this.children = moreChildrenFullnames;
@@ -725,8 +727,8 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
}
Retrofit retrofit = mAccessToken == null ? mRetrofit : mOauthRetrofit;
- FetchComment.fetchComments(retrofit, mAccessToken, mPost.getId(), commentId, sortType, mLocale,
- new FetchComment.FetchCommentListener() {
+ FetchComment.fetchComments(retrofit, mAccessToken, mPost.getId(), commentId, sortType, mExpandChildren,
+ mLocale, new FetchComment.FetchCommentListener() {
@Override
public void onFetchCommentSuccess(ArrayList<CommentData> expandedComments,
String parentId, ArrayList<String> children) {
@@ -826,7 +828,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
Retrofit retrofit = mAccessToken == null ? mRetrofit : mOauthRetrofit;
FetchComment.fetchMoreComment(retrofit, mAccessToken, children, mChildrenStartingIndex,
- 0, mLocale, new FetchComment.FetchMoreCommentListener() {
+ 0, mExpandChildren, mLocale, new FetchComment.FetchMoreCommentListener() {
@Override
public void onFetchMoreCommentSuccess(ArrayList<CommentData> expandedComments, int childrenStartingIndex) {
hasMoreChildren = childrenStartingIndex < children.size();
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java
index e001e632..a506ceba 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java
@@ -119,6 +119,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
private boolean mNeedBlurSpoiler;
private boolean mVoteButtonsOnTheRight;
private boolean mShowElapsedTime;
+ private boolean mExpandChildren;
private CommentRecyclerViewAdapterCallback mCommentRecyclerViewAdapterCallback;
private boolean isInitiallyLoading;
private boolean isInitiallyLoadingFailed;
@@ -134,7 +135,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
String accessToken, String accountName, Post post, Locale locale,
String singleCommentId, boolean isSingleCommentThreadMode,
boolean needBlurNSFW, boolean needBlurSpoiler, boolean voteButtonsOnTheRight,
- boolean showElapsedTime,
+ boolean showElapsedTime, boolean expandChildren,
CommentRecyclerViewAdapterCallback commentRecyclerViewAdapterCallback) {
mActivity = activity;
mRetrofit = retrofit;
@@ -224,6 +225,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
mNeedBlurSpoiler = needBlurSpoiler;
mVoteButtonsOnTheRight = voteButtonsOnTheRight;
mShowElapsedTime = showElapsedTime;
+ mExpandChildren = expandChildren;
mCommentRecyclerViewAdapterCallback = commentRecyclerViewAdapterCallback;
isInitiallyLoading = true;
isInitiallyLoadingFailed = false;
@@ -1107,7 +1109,8 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
Retrofit retrofit = mAccessToken == null ? mRetrofit : mOauthRetrofit;
FetchComment.fetchMoreComment(retrofit, mAccessToken, parentComment.getMoreChildrenFullnames(),
- parentComment.getMoreChildrenStartingIndex(), parentComment.getDepth() + 1, mLocale,
+ parentComment.getMoreChildrenStartingIndex(), parentComment.getDepth() + 1,
+ mExpandChildren, mLocale,
new FetchComment.FetchMoreCommentListener() {
@Override
public void onFetchMoreCommentSuccess(ArrayList<CommentData> expandedComments,
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
index f40f2e1d..8fb9a851 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
@@ -14,8 +14,8 @@ import retrofit2.Retrofit;
public class FetchComment {
public static void fetchComments(Retrofit retrofit, @Nullable String accessToken, String article,
- String commentId, String sortType, Locale locale,
- FetchCommentListener fetchCommentListener) {
+ String commentId, String sortType, boolean expandChildren,
+ Locale locale, FetchCommentListener fetchCommentListener) {
RedditAPI api = retrofit.create(RedditAPI.class);
Call<String> comments;
if (accessToken == null) {
@@ -38,7 +38,7 @@ public class FetchComment {
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
if (response.isSuccessful()) {
ParseComment.parseComment(response.body(), new ArrayList<>(),
- locale, new ParseComment.ParseCommentListener() {
+ locale, expandChildren, new ParseComment.ParseCommentListener() {
@Override
public void onParseCommentSuccess(ArrayList<CommentData> expandedComments,
String parentId, ArrayList<String> moreChildrenFullnames) {
@@ -65,7 +65,8 @@ public class FetchComment {
public static void fetchMoreComment(Retrofit retrofit, @Nullable String accessToken,
ArrayList<String> allChildren, int startingIndex,
- int depth, Locale locale, FetchMoreCommentListener fetchMoreCommentListener) {
+ int depth, boolean expandChildren, Locale locale,
+ FetchMoreCommentListener fetchMoreCommentListener) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 100; i++) {
if (allChildren.size() <= startingIndex + i) {
@@ -93,7 +94,7 @@ public class FetchComment {
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() {
+ depth, expandChildren, new ParseComment.ParseCommentListener() {
@Override
public void onParseCommentSuccess(ArrayList<CommentData> expandedComments,
String parentId, ArrayList<String> moreChildrenFullnames) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java
index d5c86143..54101eba 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java
@@ -23,14 +23,14 @@ import static ml.docilealligator.infinityforreddit.CommentData.VOTE_TYPE_UPVOTE;
public class ParseComment {
public static void parseComment(String response, ArrayList<CommentData> commentData, Locale locale,
- ParseCommentListener parseCommentListener) {
+ boolean expandChildren, ParseCommentListener parseCommentListener) {
try {
JSONArray childrenArray = new JSONArray(response);
String parentId = childrenArray.getJSONObject(0).getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY)
.getJSONObject(0).getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.NAME_KEY);
childrenArray = childrenArray.getJSONObject(1).getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
- new ParseCommentAsyncTask(childrenArray, commentData, locale, parentId, 0, parseCommentListener).execute();
+ new ParseCommentAsyncTask(childrenArray, commentData, locale, parentId, 0, expandChildren, parseCommentListener).execute();
} catch (JSONException e) {
e.printStackTrace();
parseCommentListener.onParseCommentFailed();
@@ -38,10 +38,10 @@ public class ParseComment {
}
static void parseMoreComment(String response, ArrayList<CommentData> commentData, Locale locale,
- int depth, ParseCommentListener parseCommentListener) {
+ int depth, boolean expandChildren, ParseCommentListener parseCommentListener) {
try {
JSONArray childrenArray = new JSONObject(response).getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
- new ParseCommentAsyncTask(childrenArray, commentData, locale, null, depth, parseCommentListener).execute();
+ new ParseCommentAsyncTask(childrenArray, commentData, locale, null, depth, expandChildren, parseCommentListener).execute();
} catch (JSONException e) {
e.printStackTrace();
parseCommentListener.onParseCommentFailed();
@@ -215,11 +215,13 @@ public class ParseComment {
private Locale locale;
private String parentId;
private int depth;
+ private boolean expandChildren;
private ParseCommentListener parseCommentListener;
private boolean parseFailed;
ParseCommentAsyncTask(JSONArray commentsJSONArray, ArrayList<CommentData> comments, Locale locale,
- @Nullable String parentId, int depth, ParseCommentListener parseCommentListener) {
+ @Nullable String parentId, int depth, boolean expandChildren,
+ ParseCommentListener parseCommentListener) {
this.commentsJSONArray = commentsJSONArray;
this.comments = comments;
newComments = new ArrayList<>();
@@ -228,6 +230,7 @@ public class ParseComment {
this.locale = locale;
this.parentId = parentId;
this.depth = depth;
+ this.expandChildren = expandChildren;
parseFailed = false;
this.parseCommentListener = parseCommentListener;
}
@@ -236,7 +239,9 @@ public class ParseComment {
protected Void doInBackground(Void... voids) {
try {
parseCommentRecursion(commentsJSONArray, newComments, moreChildrenFullnames, depth, locale);
- expandChildren(newComments, expandedNewComments);
+ if (expandChildren) {
+ expandChildren(newComments, expandedNewComments);
+ }
} catch (JSONException e) {
parseFailed = true;
}
@@ -246,7 +251,11 @@ public class ParseComment {
@Override
protected void onPostExecute(Void aVoid) {
if (!parseFailed) {
- comments.addAll(expandedNewComments);
+ if (expandChildren) {
+ comments.addAll(expandedNewComments);
+ } else {
+ comments.addAll(newComments);
+ }
parseCommentListener.onParseCommentSuccess(comments, parentId, moreChildrenFullnames);
} else {
parseCommentListener.onParseCommentFailed();
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java
index 6f065d5e..5ae81003 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java
@@ -71,4 +71,5 @@ public class SharedPreferencesUtils {
public static final String OPEN_LINK_IN_APP = "open_link_in_app";
public static final String LOCK_JUMP_TO_NEXT_TOP_LEVEL_COMMENT_BUTTON = "lock_jump_to_next_top_level_comment_button";
public static final String SWIPE_UP_TO_HIDE_JUMP_TO_NEXT_TOP_LEVEL_COMMENT_BUTTON = "swipe_up_to_hide_jump_to_next_top_level_comments_button";
+ public static final String SHOW_TOP_LEVEL_COMMENTS_FIRST = "show_top_level_comments_first";
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d95e7be9..b1b6b636 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -302,6 +302,7 @@
<string name="settings_volume_keys_navigate_comments_title">Use Volume Keys to Navigate Comments in Posts</string>
<string name="settings_volume_keys_navigate_posts_title">Use Volume Keys to Navigate Posts</string>
<string name="settings_mute_video_title">Mute Video</string>
+ <string name="settings_show_top_level_comments_first_title">Show Top-level Comments First</string>
<string name="settings_show_elapsed_time">Show Elapsed Time in Posts and Comments</string>
<string name="settings_default_post_layout">Default Post Layout</string>
<string name="settings_show_divider_in_compact_layout">Show Divider in Compact Layout</string>
diff --git a/app/src/main/res/xml/main_preferences.xml b/app/src/main/res/xml/main_preferences.xml
index f79b8234..4f238327 100644
--- a/app/src/main/res/xml/main_preferences.xml
+++ b/app/src/main/res/xml/main_preferences.xml
@@ -39,9 +39,14 @@
<SwitchPreference
app:defaultValue="false"
app:key="mute_video"
- android:icon="@drawable/ic_mute_preferences_24dp"
+ app:icon="@drawable/ic_mute_preferences_24dp"
app:title="@string/settings_mute_video_title" />
+ <SwitchPreference
+ app:defaultValue="false"
+ app:key="show_top_level_comments_first"
+ app:title="@string/settings_show_top_level_comments_first_title" />
+
<ListPreference
app:defaultValue="2.5"
android:entries="@array/settings_lazy_mode_interval"