Skip to content

Commit 5062e24

Browse files
fix(YouTube - Change start page): Add option to always override start page on app launch (#4832)
1 parent ee90394 commit 5062e24

File tree

4 files changed

+38
-9
lines changed

4 files changed

+38
-9
lines changed

extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeStartPagePatch.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import androidx.annotation.Nullable;
1010

1111
import app.revanced.extension.shared.Logger;
12+
import app.revanced.extension.shared.settings.Setting;
1213
import app.revanced.extension.youtube.settings.Settings;
1314

1415
@SuppressWarnings("unused")
@@ -81,6 +82,13 @@ private boolean isIntentAction() {
8182
}
8283
}
8384

85+
public static class ChangeStartPageTypeAvailability implements Setting.Availability {
86+
@Override
87+
public boolean isAvailable() {
88+
return Settings.CHANGE_START_PAGE.get() != StartPage.DEFAULT;
89+
}
90+
}
91+
8492
/**
8593
* Intent action when YouTube is cold started from the launcher.
8694
* <p>
@@ -93,6 +101,8 @@ private boolean isIntentAction() {
93101

94102
private static final StartPage START_PAGE = Settings.CHANGE_START_PAGE.get();
95103

104+
private static final boolean CHANGE_START_PAGE_ALWAYS = Settings.CHANGE_START_PAGE_ALWAYS.get();
105+
96106
/**
97107
* There is an issue where the back button on the toolbar doesn't work properly.
98108
* As a workaround for this issue, instead of overriding the browserId multiple times, just override it once.
@@ -104,13 +114,13 @@ public static String overrideBrowseId(@NonNull String original) {
104114
return original;
105115
}
106116

107-
if (appLaunched) {
117+
if (!CHANGE_START_PAGE_ALWAYS && appLaunched) {
108118
Logger.printDebug(() -> "Ignore override browseId as the app already launched");
109119
return original;
110120
}
111121
appLaunched = true;
112122

113-
Logger.printDebug(() -> "Changing browseId to " + START_PAGE.id);
123+
Logger.printDebug(() -> "Changing browseId to: " + START_PAGE.id);
114124
return START_PAGE.id;
115125
}
116126

@@ -125,14 +135,14 @@ public static void overrideIntentAction(@NonNull Intent intent) {
125135
return;
126136
}
127137

128-
if (appLaunched) {
138+
if (!CHANGE_START_PAGE_ALWAYS && appLaunched) {
129139
Logger.printDebug(() -> "Ignore override intent action as the app already launched");
130140
return;
131141
}
132142
appLaunched = true;
133143

134144
String intentAction = START_PAGE.id;
135-
Logger.printDebug(() -> "Changing intent action to " + intentAction);
145+
Logger.printDebug(() -> "Changing intent action to: " + intentAction);
136146
intent.setAction(intentAction);
137147
}
138148
}

extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static app.revanced.extension.shared.settings.Setting.parent;
88
import static app.revanced.extension.shared.settings.Setting.parentsAny;
99
import static app.revanced.extension.youtube.patches.ChangeFormFactorPatch.FormFactor;
10+
import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.ChangeStartPageTypeAvailability;
1011
import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.StartPage;
1112
import static app.revanced.extension.youtube.patches.ExitFullscreenPatch.FullscreenMode;
1213
import static app.revanced.extension.youtube.patches.ForceOriginalAudioPatch.ForceOriginalAudioAvailability;
@@ -222,6 +223,8 @@ public class Settings extends BaseSettings {
222223
public static final BooleanSetting SPOOF_APP_VERSION = new BooleanSetting("revanced_spoof_app_version", FALSE, true, "revanced_spoof_app_version_user_dialog_message");
223224
public static final BooleanSetting WIDE_SEARCHBAR = new BooleanSetting("revanced_wide_searchbar", FALSE, true);
224225
public static final EnumSetting<StartPage> CHANGE_START_PAGE = new EnumSetting<>("revanced_change_start_page", StartPage.DEFAULT, true);
226+
public static final BooleanSetting CHANGE_START_PAGE_ALWAYS = new BooleanSetting("revanced_change_start_page_always", FALSE, true,
227+
new ChangeStartPageTypeAvailability());
225228
public static final StringSetting SPOOF_APP_VERSION_TARGET = new StringSetting("revanced_spoof_app_version_target", "19.01.34", true, parent(SPOOF_APP_VERSION));
226229
// Custom filter
227230
public static final BooleanSetting CUSTOM_FILTER = new BooleanSetting("revanced_custom_filter", FALSE);

patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/ChangeStartPagePatch.kt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import app.revanced.patcher.patch.bytecodePatch
77
import app.revanced.patches.all.misc.resources.addResources
88
import app.revanced.patches.all.misc.resources.addResourcesPatch
99
import app.revanced.patches.shared.misc.settings.preference.ListPreference
10+
import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory
11+
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
12+
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
1013
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
1114
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
1215
import app.revanced.patches.youtube.misc.settings.settingsPatch
@@ -43,10 +46,18 @@ val changeStartPagePatch = bytecodePatch(
4346
addResources("youtube", "layout.startpage.changeStartPagePatch")
4447

4548
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
46-
ListPreference(
47-
key = "revanced_change_start_page",
48-
summaryKey = null,
49-
),
49+
PreferenceCategory(
50+
titleKey = null,
51+
sorting = Sorting.UNSORTED,
52+
tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory",
53+
preferences = setOf(
54+
ListPreference(
55+
key = "revanced_change_start_page",
56+
summaryKey = null,
57+
),
58+
SwitchPreference("revanced_change_start_page_always")
59+
)
60+
)
5061
)
5162

5263
// Hook browseId.

patches/src/main/resources/addresources/values/strings.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1173,7 +1173,7 @@ If later turned off, it is recommended to clear the app data to prevent UI bugs.
11731173
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - Restore old navigation icons</string>
11741174
</patch>
11751175
<patch id="layout.startpage.changeStartPagePatch">
1176-
<string name="revanced_change_start_page_title">Set start page</string>
1176+
<string name="revanced_change_start_page_title">Change start page</string>
11771177
<string name="revanced_change_start_page_entry_default">Default</string>
11781178
<string name="revanced_change_start_page_entry_all_subscriptions">All subscriptions</string>
11791179
<string name="revanced_change_start_page_entry_browse">Browse channels</string>
@@ -1199,6 +1199,11 @@ If later turned off, it is recommended to clear the app data to prevent UI bugs.
11991199
<string name="revanced_change_start_page_entry_virtual_reality">Virtual Reality</string>
12001200
<string name="revanced_change_start_page_entry_watch_later">Watch later</string>
12011201
<string name="revanced_change_start_page_entry_your_clips">Your clips</string>
1202+
<string name="revanced_change_start_page_always_title">Always change start page</string>
1203+
<string name="revanced_change_start_page_always_summary_on">"Start page is always changed
1204+
1205+
Limitation: Using the back button on the toolbar may not work"</string>
1206+
<string name="revanced_change_start_page_always_summary_off">Start page is changed only on app startup</string>
12021207
</patch>
12031208
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
12041209
<string name="revanced_disable_resuming_shorts_player_title">Disable resuming Shorts player</string>

0 commit comments

Comments
 (0)