From 216958040418ffe4fae4dd98b9fd7998f2cbc71b Mon Sep 17 00:00:00 2001 From: Mark Yu Date: Sun, 2 Feb 2025 10:16:46 -0500 Subject: [PATCH 1/3] Remove random subreddit shortcut (#1271) --- .../redreader/activities/MainActivity.java | 14 ++-------- .../activities/PostListingActivity.java | 22 ++-------------- .../adapters/MainMenuListingManager.java | 20 -------------- .../redreader/common/FeatureFlagHandler.java | 5 ---- .../redreader/common/PrefsUtility.java | 6 ----- .../redreader/fragments/MainMenuFragment.java | 10 +++---- .../fragments/PostListingFragment.java | 19 -------------- .../PostListingController.java | 7 ----- .../reddit/url/SubredditPostListURL.java | 26 +------------------ src/main/res/values/arrays.xml | 4 --- src/main/res/values/strings.xml | 8 ------ 11 files changed, 8 insertions(+), 133 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/activities/MainActivity.java b/src/main/java/org/quantumbadger/redreader/activities/MainActivity.java index c766391f5..29d0107fc 100644 --- a/src/main/java/org/quantumbadger/redreader/activities/MainActivity.java +++ b/src/main/java/org/quantumbadger/redreader/activities/MainActivity.java @@ -266,14 +266,6 @@ public void onSelected(final @MainMenuFragment.MainMenuAction int type) { onSelected(SubredditPostListURL.getPopular()); break; - case MainMenuFragment.MENU_MENU_ACTION_RANDOM: - onSelected(SubredditPostListURL.getRandom()); - break; - - case MainMenuFragment.MENU_MENU_ACTION_RANDOM_NSFW: - onSelected(SubredditPostListURL.getRandomNsfw()); - break; - case MainMenuFragment.MENU_MENU_ACTION_ALL: onSelected(SubredditPostListURL.getAll()); break; @@ -779,8 +771,7 @@ public boolean onCreateOptionsMenu(final Menu menu) { if(postsVisible && !user.isAnonymous() - && (postListingController.isSubreddit() - || postListingController.isRandomSubreddit()) + && postListingController.isSubreddit() && subredditSubscriptionManager.areSubscriptionsReady() && postListingFragment != null && postListingFragment.getSubreddit() != null) { @@ -794,8 +785,7 @@ public boolean onCreateOptionsMenu(final Menu menu) { } if(postsVisible - && (postListingController.isSubreddit() - || postListingController.isRandomSubreddit()) + && postListingController.isSubreddit() && postListingFragment != null && postListingFragment.getSubreddit() != null) { diff --git a/src/main/java/org/quantumbadger/redreader/activities/PostListingActivity.java b/src/main/java/org/quantumbadger/redreader/activities/PostListingActivity.java index 0ec066187..fbb90d106 100644 --- a/src/main/java/org/quantumbadger/redreader/activities/PostListingActivity.java +++ b/src/main/java/org/quantumbadger/redreader/activities/PostListingActivity.java @@ -46,13 +46,11 @@ import org.quantumbadger.redreader.reddit.api.SubredditSubscriptionState; import org.quantumbadger.redreader.reddit.prepared.RedditPreparedPost; import org.quantumbadger.redreader.reddit.things.InvalidSubredditNameException; -import org.quantumbadger.redreader.reddit.things.RedditSubreddit; import org.quantumbadger.redreader.reddit.things.SubredditCanonicalId; import org.quantumbadger.redreader.reddit.url.PostCommentListingURL; import org.quantumbadger.redreader.reddit.url.PostListingURL; import org.quantumbadger.redreader.reddit.url.RedditURLParser; import org.quantumbadger.redreader.reddit.url.SearchPostListURL; -import org.quantumbadger.redreader.reddit.url.SubredditPostListURL; import org.quantumbadger.redreader.views.RedditPostView; import java.util.Locale; @@ -187,24 +185,8 @@ public boolean onCreateOptionsMenu(final Menu menu) { final RedditSubredditSubscriptionManager subredditSubscriptionManager = RedditSubredditSubscriptionManager.getSingleton(this, user); - if(fragment != null - && controller.isRandomSubreddit() - && fragment.getSubreddit() != null) { - SubredditPostListURL url = SubredditPostListURL.parse(controller.getUri()); - if(url != null && url.type == SubredditPostListURL.Type.RANDOM) { - try { - final String newSubreddit - = RedditSubreddit.stripRPrefix(fragment.getSubreddit().url); - url = url.changeSubreddit(newSubreddit); - controller = new PostListingController(url, this); - } catch(final InvalidSubredditNameException e) { - throw new RuntimeException(e); - } - } - } - if(!user.isAnonymous() - && (controller.isSubreddit() || controller.isRandomSubreddit()) + && controller.isSubreddit() && subredditSubscriptionManager.areSubscriptionsReady() && fragment != null && fragment.getSubreddit() != null) { @@ -224,7 +206,7 @@ public boolean onCreateOptionsMenu(final Menu menu) { Boolean subredditPinState = null; Boolean subredditBlockedState = null; - if((controller.isSubreddit() || controller.isRandomSubreddit()) + if(controller.isSubreddit() && fragment != null && fragment.getSubreddit() != null) { diff --git a/src/main/java/org/quantumbadger/redreader/adapters/MainMenuListingManager.java b/src/main/java/org/quantumbadger/redreader/adapters/MainMenuListingManager.java index c2fa94d1d..098413c61 100644 --- a/src/main/java/org/quantumbadger/redreader/adapters/MainMenuListingManager.java +++ b/src/main/java/org/quantumbadger/redreader/adapters/MainMenuListingManager.java @@ -264,26 +264,6 @@ public MainMenuListingManager( null, false)); } - - if(mainMenuShortcutItems.contains(MainMenuFragment.MainMenuShortcutItems.RANDOM)) { - mAdapter.appendToGroup( - GROUP_MAIN_ITEMS, - makeItem( - R.string.mainmenu_random, - MainMenuFragment.MENU_MENU_ACTION_RANDOM, - null, - false)); - } - - if(mainMenuShortcutItems.contains(MainMenuFragment.MainMenuShortcutItems.RANDOM_NSFW)) { - mAdapter.appendToGroup( - GROUP_MAIN_ITEMS, - makeItem( - R.string.mainmenu_random_nsfw, - MainMenuFragment.MENU_MENU_ACTION_RANDOM_NSFW, - null, - false)); - } } if(PrefsUtility.pref_menus_mainmenu_dev_announcements()) { diff --git a/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java b/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java index 7111f8027..b9b566878 100644 --- a/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java +++ b/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java @@ -475,11 +475,6 @@ public static void handleLegacyUpgrade( existingShortcutPreferences.add("popular"); } - - if(PrefsUtility.pref_show_random_main_menu()) { - existingShortcutPreferences.add("random"); - } - sharedPreferences.edit().putStringSet( activity.getString(R.string.pref_menus_mainmenu_shortcutitems_key), existingShortcutPreferences).apply(); diff --git a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java index d8c1e7531..56796e840 100644 --- a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java +++ b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java @@ -453,12 +453,6 @@ public static boolean pref_show_popular_main_menu() { false); } - public static boolean pref_show_random_main_menu() { - return getBoolean( - R.string.pref_menus_show_random_main_menu_key, - false); - } - public static boolean pref_show_multireddit_main_menu() { return getBoolean( R.string.pref_menus_show_multireddit_main_menu_key, diff --git a/src/main/java/org/quantumbadger/redreader/fragments/MainMenuFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/MainMenuFragment.java index e3237131c..67fc468ca 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/MainMenuFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/MainMenuFragment.java @@ -68,10 +68,8 @@ public class MainMenuFragment extends RRFragment implements public static final int MENU_MENU_ACTION_CUSTOM = 10; public static final int MENU_MENU_ACTION_ALL = 11; public static final int MENU_MENU_ACTION_POPULAR = 12; - public static final int MENU_MENU_ACTION_RANDOM = 13; - public static final int MENU_MENU_ACTION_RANDOM_NSFW = 14; - public static final int MENU_MENU_ACTION_SENT_MESSAGES = 15; - public static final int MENU_MENU_ACTION_FIND_SUBREDDIT = 16; + public static final int MENU_MENU_ACTION_SENT_MESSAGES = 13; + public static final int MENU_MENU_ACTION_FIND_SUBREDDIT = 14; @IntDef({ MENU_MENU_ACTION_FRONTPAGE, @@ -87,8 +85,6 @@ public class MainMenuFragment extends RRFragment implements MENU_MENU_ACTION_CUSTOM, MENU_MENU_ACTION_ALL, MENU_MENU_ACTION_POPULAR, - MENU_MENU_ACTION_RANDOM, - MENU_MENU_ACTION_RANDOM_NSFW, MENU_MENU_ACTION_SENT_MESSAGES, MENU_MENU_ACTION_FIND_SUBREDDIT}) @Retention(RetentionPolicy.SOURCE) @@ -213,7 +209,7 @@ public enum MainMenuUserItems { } public enum MainMenuShortcutItems { - FRONTPAGE, POPULAR, ALL, SUBREDDIT_SEARCH, CUSTOM, RANDOM, RANDOM_NSFW + FRONTPAGE, POPULAR, ALL, SUBREDDIT_SEARCH, CUSTOM } @Override diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index 573aebabd..ad6f08728 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -302,7 +302,6 @@ public void onScrolled( CacheManager.getInstance(context).makeRequest(mRequest); break; - case RANDOM: case SUBREDDIT: { // Request the subreddit data @@ -419,24 +418,6 @@ public synchronized void restackRefreshCount() { } private void onSubredditReceived() { - - if(mPostListingURL.pathType() == RedditURLParser.SUBREDDIT_POST_LISTING_URL - && mPostListingURL.asSubredditPostListURL().type - == SubredditPostListURL.Type.RANDOM) { - try { - mPostListingURL = mPostListingURL.asSubredditPostListURL() - .changeSubreddit(RedditSubreddit.stripRPrefix(mSubreddit.url)); - mRequest = createPostListingRequest( - UriString.from(mPostListingURL.generateJsonUri()), - RedditAccountManager.getInstance(getContext()) - .getDefaultAccount(), - mSession, - mRequest.downloadStrategy, - true); - } catch(final InvalidSubredditNameException e) { - throw new RuntimeException(e); - } - } final String subtitle; if(mPostListingURL.getOrder() == null diff --git a/src/main/java/org/quantumbadger/redreader/listingcontrollers/PostListingController.java b/src/main/java/org/quantumbadger/redreader/listingcontrollers/PostListingController.java index 3c74f265e..9b3bbc444 100644 --- a/src/main/java/org/quantumbadger/redreader/listingcontrollers/PostListingController.java +++ b/src/main/java/org/quantumbadger/redreader/listingcontrollers/PostListingController.java @@ -162,11 +162,6 @@ public final boolean isSubredditCombination() { == SubredditPostListURL.Type.SUBREDDIT_COMBINATION; } - public final boolean isRandomSubreddit() { - return url.pathType() == RedditURLParser.SUBREDDIT_POST_LISTING_URL - && url.asSubredditPostListURL().type == SubredditPostListURL.Type.RANDOM; - } - public final boolean isMultireddit() { return url.pathType() == RedditURLParser.MULTIREDDIT_POST_LISTING_URL; } @@ -189,8 +184,6 @@ public final SubredditCanonicalId subredditCanonicalName() { && (url.asSubredditPostListURL().type == SubredditPostListURL.Type.SUBREDDIT || url.asSubredditPostListURL().type - == SubredditPostListURL.Type.RANDOM - || url.asSubredditPostListURL().type == SubredditPostListURL.Type.SUBREDDIT_COMBINATION)) { try { return new SubredditCanonicalId(url.asSubredditPostListURL().subreddit); diff --git a/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java b/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java index d6f23a80f..164d1d981 100644 --- a/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java +++ b/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java @@ -43,14 +43,6 @@ public static SubredditPostListURL getPopular() { return new SubredditPostListURL(Type.POPULAR, null, null, null, null, null); } - public static SubredditPostListURL getRandom() { - return new SubredditPostListURL(Type.RANDOM, "random", null, null, null, null); - } - - public static SubredditPostListURL getRandomNsfw() { - return new SubredditPostListURL(Type.RANDOM, "randnsfw", null, null, null, null); - } - public static SubredditPostListURL getAll() { return new SubredditPostListURL(Type.ALL, null, null, null, null, null); } @@ -69,7 +61,7 @@ public static RedditURLParser.RedditURL getSubreddit(final SubredditCanonicalId } public enum Type { - FRONTPAGE, ALL, SUBREDDIT, SUBREDDIT_COMBINATION, ALL_SUBTRACTION, POPULAR, RANDOM + FRONTPAGE, ALL, SUBREDDIT, SUBREDDIT_COMBINATION, ALL_SUBTRACTION, POPULAR } @NonNull public final Type type; @@ -136,7 +128,6 @@ public Uri generateJsonUri() { case SUBREDDIT: case SUBREDDIT_COMBINATION: case ALL_SUBTRACTION: - case RANDOM: builder.encodedPath("/r/"); builder.appendPath(subreddit); break; @@ -293,16 +284,6 @@ public static SubredditPostListURL parse(final Uri uri) { before, after); - } else if(subreddit.equals("random") || subreddit.equals("randnsfw")) { - - return new SubredditPostListURL( - Type.RANDOM, - subreddit, - order, - limit, - before, - after); - } else if(subreddit.matches("all(\\-[\\w\\.]+)+")) { if(pathSegments.length == 2) { @@ -428,11 +409,6 @@ public String humanReadableName(final Context context, final boolean shorter) { case POPULAR: return context.getString(R.string.mainmenu_popular); - case RANDOM: - return context.getString("randnsfw".equals(subreddit) - ? R.string.mainmenu_random_nsfw - : R.string.mainmenu_random); - case SUBREDDIT: try { return new SubredditCanonicalId(subreddit).toString(); diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml index b6e16ba10..922743096 100644 --- a/src/main/res/values/arrays.xml +++ b/src/main/res/values/arrays.xml @@ -841,8 +841,6 @@ @string/mainmenu_all @string/find_location @string/mainmenu_custom_destination - @string/mainmenu_random - @string/mainmenu_random_nsfw @@ -852,8 +850,6 @@ all subreddit_search custom - random - random_nsfw diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 8c1f4a692..120ec4efd 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1006,11 +1006,6 @@ Could not turn off replies to inbox - - Random Subreddit - pref_menus_show_random_main_menu - Show /r/random in main menu - Suomi မြန်မာဘာသာ @@ -1072,9 +1067,6 @@ pref_menus_show_subscribed_main_menu Show subscribed subreddits - - Random NSFW Subreddit - pref_appearance_show_aspect_ratio_indicator_key Show aspect ratio indicator From a9c6a9e721fd78c37f6ed7b359edb1eed6fb84db Mon Sep 17 00:00:00 2001 From: QuantumBadger Date: Sun, 20 Apr 2025 18:04:16 +0100 Subject: [PATCH 2/3] Fix crash due to missing enum constant (#1271) --- .../redreader/common/FeatureFlagHandler.java | 22 ++++++++++++++++++- .../redreader/common/PrefsUtility.java | 9 ++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java b/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java index b9b566878..cd5495d59 100644 --- a/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java +++ b/src/main/java/org/quantumbadger/redreader/common/FeatureFlagHandler.java @@ -58,7 +58,8 @@ private enum FeatureFlag { POST_TITLE_TAP_ACTION_FEATURE("postTitleTapActionFeature"), DEFAULT_PREF_VIDEO_PLAYBACK_CONTROLS("defaultPrefVideoPlaybackControls"), DEFAULT_PREF_CUSTOM_TABS("defaultPrefCustomTabs"), - CROSSPOST_ORIGIN_MENU_ITEM("crosspostOriginMenuItem"); + CROSSPOST_ORIGIN_MENU_ITEM("crosspostOriginMenuItem"), + MAIN_MENU_RANDOM_REMOVED("mainMenuRandomRemoved"); @NonNull private final String id; @@ -329,6 +330,25 @@ public static void handleUpgrade(@NonNull final Context context) { existingPostActionMenuItems) .apply(); } + + if(getAndSetFeatureFlag(prefs, FeatureFlag.MAIN_MENU_RANDOM_REMOVED) + == FeatureFlagStatus.UPGRADE_NEEDED) { + + Log.i(TAG, "Upgrading, removing random from main menu."); + + final Set existingShortcutPreferences + = PrefsUtility.getStringSet( + R.string.pref_menus_mainmenu_shortcutitems_key, + R.array.pref_menus_mainmenu_shortcutitems_items_default + ); + + existingShortcutPreferences.remove("random"); + existingShortcutPreferences.remove("random_nsfw"); + + prefs.edit().putStringSet( + context.getString(R.string.pref_menus_mainmenu_shortcutitems_key), + existingShortcutPreferences).apply(); + } }); } diff --git a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java index 56796e840..7fed56a1b 100644 --- a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java +++ b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.res.Resources; import android.util.DisplayMetrics; +import android.util.Log; import android.view.MenuItem; import androidx.annotation.NonNull; @@ -1465,8 +1466,12 @@ public static EnumSet pref_menus_mainmenu_us final EnumSet result = EnumSet.noneOf( MainMenuFragment.MainMenuShortcutItems.class); for(final String s : strings) { - result.add(MainMenuFragment.MainMenuShortcutItems.valueOf( - StringUtils.asciiUppercase(s))); + try { + result.add(MainMenuFragment.MainMenuShortcutItems.valueOf( + StringUtils.asciiUppercase(s))); + } catch (final Exception e) { + Log.e("PrefsUtility", "Ignoring unknown constant " + s, e); + } } return result; From 59ae8a4e81fb0273b4fc55964e944b4aada071ed Mon Sep 17 00:00:00 2001 From: QuantumBadger Date: Sun, 20 Apr 2025 18:06:32 +0100 Subject: [PATCH 3/3] Update changelog (#1271) --- src/main/assets/changelog-alpha.txt | 1 + src/main/assets/changelog.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/assets/changelog-alpha.txt b/src/main/assets/changelog-alpha.txt index 7bebc6beb..0c0a45d24 100644 --- a/src/main/assets/changelog-alpha.txt +++ b/src/main/assets/changelog-alpha.txt @@ -3,6 +3,7 @@ Added support for emotes in comment flairs (thanks to bharatknv) Added "Mark as Read/Unread" fling action, and optional context menu item (thanks to JoshAusHessen and codeofdusk) Show label on crossposts, and add "Go to Crosspost Origin" to post menu (thanks to folkemat) Added preference to prevent posts being marked as read when clicked (thanks to Daniel Ho) +Remove random subreddit feature which is no longer supported by Reddit (thanks to Mark Yu) /Alpha 358 (2025-03-12) Added video playback speed control (thanks to folkemat) diff --git a/src/main/assets/changelog.txt b/src/main/assets/changelog.txt index dab8b476d..cf8b9a615 100644 --- a/src/main/assets/changelog.txt +++ b/src/main/assets/changelog.txt @@ -4,6 +4,7 @@ Added support for emotes in comment flairs (thanks to bharatknv) Show label on crossposts, and add "Go to Crosspost Origin" to post menu (thanks to folkemat) Added "Mark as Read/Unread" fling action, and optional post menu item (thanks to JoshAusHessen and codeofdusk) Added preference to prevent posts being marked as read when clicked (thanks to Daniel Ho) +Remove random subreddit feature which is no longer supported by Reddit (thanks to Mark Yu) 113/1.24.1 Fix "Malformed URL" error for Imgur images (thanks to Alexey Rochev)