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) 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..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(); + } }); } @@ -475,11 +495,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..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; @@ -453,12 +454,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, @@ -1471,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; 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