From 0c7e5bc16f72a2f3bf1b5c5ec2446f1f74556c14 Mon Sep 17 00:00:00 2001
From: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>
Date: Sun, 21 Aug 2022 10:58:18 +1000
Subject: [PATCH] Show an indicator for the current sort type in
SortTypeBottomSheetFragment.
---
.../AccessTokenAuthenticator.java | 7 ++++-
.../AnyAccountAccessTokenAuthenticator.java | 7 ++++-
.../activities/FilteredPostsActivity.java | 11 ++-----
.../activities/MainActivity.java | 10 +++----
.../ViewMultiRedditDetailActivity.java | 9 +++---
.../ViewSubredditDetailActivity.java | 10 +++----
.../SortTypeBottomSheetFragment.java | 29 ++++++++++++++++++-
.../ic_round_check_circle_day_night_24dp.xml | 5 ++++
.../ic_round_check_circle_day_night_24dp.xml | 5 ++++
9 files changed, 66 insertions(+), 27 deletions(-)
create mode 100644 app/src/main/res/drawable-night/ic_round_check_circle_day_night_24dp.xml
create mode 100644 app/src/main/res/drawable/ic_round_check_circle_day_night_24dp.xml
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java
index 1ac3b368..588d4041 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java
@@ -39,7 +39,12 @@ class AccessTokenAuthenticator implements Authenticator {
@Override
public Request authenticate(Route route, @NonNull Response response) {
if (response.code() == 401) {
- String accessToken = response.request().header(APIUtils.AUTHORIZATION_KEY).substring(APIUtils.AUTHORIZATION_BASE.length());
+ String accessTokenHeader = response.request().header(APIUtils.AUTHORIZATION_KEY);
+ if (accessTokenHeader == null) {
+ return null;
+ }
+
+ String accessToken = accessTokenHeader.substring(APIUtils.AUTHORIZATION_BASE.length());
synchronized (this) {
Account account = mRedditDataRoomDatabase.accountDao().getCurrentAccount();
if (account == null) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AnyAccountAccessTokenAuthenticator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AnyAccountAccessTokenAuthenticator.java
index 4cedc8e9..9bd31c2d 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/AnyAccountAccessTokenAuthenticator.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AnyAccountAccessTokenAuthenticator.java
@@ -42,7 +42,12 @@ public class AnyAccountAccessTokenAuthenticator implements Authenticator {
@Override
public Request authenticate(Route route, @NonNull Response response) {
if (response.code() == 401) {
- String accessToken = response.request().header(APIUtils.AUTHORIZATION_KEY).substring(APIUtils.AUTHORIZATION_BASE.length());
+ String accessTokenHeader = response.request().header(APIUtils.AUTHORIZATION_KEY);
+ if (accessTokenHeader == null) {
+ return null;
+ }
+
+ String accessToken = accessTokenHeader.substring(APIUtils.AUTHORIZATION_BASE.length());
synchronized (this) {
if (mAccount == null) {
return null;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java
index 36438c02..1d59eb8d 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java
@@ -7,7 +7,6 @@ import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -356,10 +355,7 @@ public class FilteredPostsActivity extends BaseActivity implements SortTypeSelec
} else if (itemId == R.id.action_sort_filtered_thing_activity) {
switch (postType) {
case PostPagingSource.TYPE_FRONT_PAGE:
- SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
- Bundle bestBundle = new Bundle();
- bestBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, false);
- bestSortTypeBottomSheetFragment.setArguments(bestBundle);
+ SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment = SortTypeBottomSheetFragment.getNewInstance(false, mFragment.getSortType().getType().fullName);
bestSortTypeBottomSheetFragment.show(getSupportFragmentManager(), bestSortTypeBottomSheetFragment.getTag());
break;
case PostPagingSource.TYPE_SEARCH:
@@ -372,10 +368,7 @@ public class FilteredPostsActivity extends BaseActivity implements SortTypeSelec
case PostPagingSource.TYPE_MULTI_REDDIT:
case PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT:
case PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE:
- SortTypeBottomSheetFragment sortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
- Bundle popularBundle = new Bundle();
- popularBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, true);
- sortTypeBottomSheetFragment.setArguments(popularBundle);
+ SortTypeBottomSheetFragment sortTypeBottomSheetFragment = SortTypeBottomSheetFragment.getNewInstance(true, mFragment.getSortType().getType().fullName);
sortTypeBottomSheetFragment.show(getSupportFragmentManager(), sortTypeBottomSheetFragment.getTag());
break;
case PostPagingSource.TYPE_USER:
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java
index ebe833a4..1a453f35 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java
@@ -1065,11 +1065,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
private void changeSortType() {
int currentPostType = sectionsPagerAdapter.getCurrentPostType();
- Bundle bundle = new Bundle();
- bundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, currentPostType != PostPagingSource.TYPE_FRONT_PAGE);
- SortTypeBottomSheetFragment sortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
- sortTypeBottomSheetFragment.setArguments(bundle);
- sortTypeBottomSheetFragment.show(getSupportFragmentManager(), sortTypeBottomSheetFragment.getTag());
+ PostFragment postFragment = sectionsPagerAdapter.getCurrentFragment();
+ if (postFragment != null) {
+ SortTypeBottomSheetFragment sortTypeBottomSheetFragment = SortTypeBottomSheetFragment.getNewInstance(currentPostType != PostPagingSource.TYPE_FRONT_PAGE, postFragment.getSortType().getType().fullName);
+ sortTypeBottomSheetFragment.show(getSupportFragmentManager(), sortTypeBottomSheetFragment.getTag());
+ }
}
@Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java
index 31c0a19f..e3cf7c63 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java
@@ -575,11 +575,10 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT
}
private void showSortTypeBottomSheetFragment() {
- SortTypeBottomSheetFragment sortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
- Bundle bottomSheetBundle = new Bundle();
- bottomSheetBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, true);
- sortTypeBottomSheetFragment.setArguments(bottomSheetBundle);
- sortTypeBottomSheetFragment.show(getSupportFragmentManager(), sortTypeBottomSheetFragment.getTag());
+ if (mFragment instanceof PostFragment) {
+ SortTypeBottomSheetFragment sortTypeBottomSheetFragment = SortTypeBottomSheetFragment.getNewInstance(true, ((PostFragment) mFragment).getSortType().getType().fullName);
+ sortTypeBottomSheetFragment.show(getSupportFragmentManager(), sortTypeBottomSheetFragment.getTag());
+ }
}
private void showPostLayoutBottomSheetFragment() {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java
index af31b76a..d266145a 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java
@@ -1091,11 +1091,11 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
}
private void displaySortTypeBottomSheetFragment() {
- SortTypeBottomSheetFragment sortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
- Bundle bottomSheetBundle = new Bundle();
- bottomSheetBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, true);
- sortTypeBottomSheetFragment.setArguments(bottomSheetBundle);
- sortTypeBottomSheetFragment.show(getSupportFragmentManager(), sortTypeBottomSheetFragment.getTag());
+ Fragment fragment = fragmentManager.findFragmentByTag("f0");
+ if (fragment instanceof PostFragment) {
+ SortTypeBottomSheetFragment sortTypeBottomSheetFragment = SortTypeBottomSheetFragment.getNewInstance(true, ((PostFragment) fragment).getSortType().getType().fullName);
+ sortTypeBottomSheetFragment.show(fragmentManager, sortTypeBottomSheetFragment.getTag());
+ }
}
@Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/SortTypeBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/SortTypeBottomSheetFragment.java
index f2d50c38..881b1910 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/SortTypeBottomSheetFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/SortTypeBottomSheetFragment.java
@@ -11,6 +11,7 @@ import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.appcompat.content.res.AppCompatResources;
import androidx.fragment.app.Fragment;
import butterknife.BindView;
@@ -29,6 +30,8 @@ import ml.docilealligator.infinityforreddit.utils.Utils;
public class SortTypeBottomSheetFragment extends LandscapeExpandedRoundedBottomSheetDialogFragment {
public static final String EXTRA_NO_BEST_TYPE = "ENBT";
+ public static final String EXTRA_CURRENT_SORT_TYPE = "ECST";
+
@BindView(R.id.best_type_text_view_sort_type_bottom_sheet_fragment)
TextView bestTypeTextView;
@BindView(R.id.hot_type_text_view_sort_type_bottom_sheet_fragment)
@@ -46,6 +49,15 @@ public class SortTypeBottomSheetFragment extends LandscapeExpandedRoundedBottomS
// Required empty public constructor
}
+ public static SortTypeBottomSheetFragment getNewInstance(boolean isNoBestType, String currentSortType) {
+ SortTypeBottomSheetFragment fragment = new SortTypeBottomSheetFragment();
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(EXTRA_NO_BEST_TYPE, isNoBestType);
+ bundle.putString(EXTRA_CURRENT_SORT_TYPE, currentSortType);
+ fragment.setArguments(bundle);
+ return fragment;
+ }
+
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -57,7 +69,7 @@ public class SortTypeBottomSheetFragment extends LandscapeExpandedRoundedBottomS
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
}
- if (getArguments() == null || getArguments().getBoolean(EXTRA_NO_BEST_TYPE)) {
+ if (getArguments().getBoolean(EXTRA_NO_BEST_TYPE)) {
bestTypeTextView.setVisibility(View.GONE);
} else {
bestTypeTextView.setOnClickListener(view -> {
@@ -66,6 +78,21 @@ public class SortTypeBottomSheetFragment extends LandscapeExpandedRoundedBottomS
});
}
+ String currentSortType = getArguments().getString(EXTRA_CURRENT_SORT_TYPE);
+ if (currentSortType.equals(SortType.Type.BEST.fullName)) {
+ bestTypeTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(bestTypeTextView.getCompoundDrawablesRelative()[0], null, AppCompatResources.getDrawable(activity, R.drawable.ic_round_check_circle_day_night_24dp), null);
+ } else if (currentSortType.equals(SortType.Type.HOT.fullName)) {
+ hotTypeTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(hotTypeTextView.getCompoundDrawablesRelative()[0], null, AppCompatResources.getDrawable(activity, R.drawable.ic_round_check_circle_day_night_24dp), null);
+ } else if (currentSortType.equals(SortType.Type.NEW.fullName)) {
+ newTypeTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(newTypeTextView.getCompoundDrawablesRelative()[0], null, AppCompatResources.getDrawable(activity, R.drawable.ic_round_check_circle_day_night_24dp), null);
+ } else if (currentSortType.equals(SortType.Type.RISING.fullName)) {
+ risingTypeTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(risingTypeTextView.getCompoundDrawablesRelative()[0], null, AppCompatResources.getDrawable(activity, R.drawable.ic_round_check_circle_day_night_24dp), null);
+ } else if (currentSortType.equals(SortType.Type.TOP.fullName)) {
+ topTypeTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(topTypeTextView.getCompoundDrawablesRelative()[0], null, AppCompatResources.getDrawable(activity, R.drawable.ic_round_check_circle_day_night_24dp), null);
+ } else if (currentSortType.equals(SortType.Type.CONTROVERSIAL.fullName)) {
+ controversialTypeTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(controversialTypeTextView.getCompoundDrawablesRelative()[0], null, AppCompatResources.getDrawable(activity, R.drawable.ic_round_check_circle_day_night_24dp), null);
+ }
+
hotTypeTextView.setOnClickListener(view -> {
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.HOT));
dismiss();
diff --git a/app/src/main/res/drawable-night/ic_round_check_circle_day_night_24dp.xml b/app/src/main/res/drawable-night/ic_round_check_circle_day_night_24dp.xml
new file mode 100644
index 00000000..d11c68bf
--- /dev/null
+++ b/app/src/main/res/drawable-night/ic_round_check_circle_day_night_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_round_check_circle_day_night_24dp.xml b/app/src/main/res/drawable/ic_round_check_circle_day_night_24dp.xml
new file mode 100644
index 00000000..f484cad7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_round_check_circle_day_night_24dp.xml
@@ -0,0 +1,5 @@
+
+
+