Skip to content

Commit 9a1e6ca

Browse files
feat(YouTube - Playback Speed): Use modern custom speed dialog (#5069)
Co-authored-by: LisoUseInAIKyrios <[email protected]>
1 parent d96134c commit 9a1e6ca

File tree

17 files changed

+698
-210
lines changed

17 files changed

+698
-210
lines changed

extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ static String createInnertubeBody(ClientType clientType, String videoId) {
7171
return innerTubeBody.toString();
7272
}
7373

74-
/**
75-
* @noinspection SameParameterValue
76-
*/
74+
@SuppressWarnings("SameParameterValue")
7775
static HttpURLConnection getPlayerResponseConnectionFromRoute(Route.CompiledRoute route, ClientType clientType) throws IOException {
7876
var connection = Requester.getConnectionFromCompiledRoute(YT_API_URL, route);
7977

extensions/youtube/src/main/java/app/revanced/extension/youtube/ThemeHelper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ public static int getForegroundColor() {
105105
return isDarkTheme() ? getLightThemeColor() : getDarkThemeColor();
106106
}
107107

108+
public static int getDialogBackgroundColor() {
109+
final String colorName = isDarkTheme()
110+
? "yt_black1"
111+
: "yt_white1";
112+
113+
return Utils.getColorFromString(colorName);
114+
}
115+
108116
public static int getToolbarBackgroundColor() {
109117
final String colorName = isDarkTheme()
110118
? "yt_black3"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ static DecodedThumbnailUrl decodeImageUrl(String url) {
686686
? "" : fullUrl.substring(imageExtensionEndIndex);
687687
}
688688

689-
/** @noinspection SameParameterValue */
689+
@SuppressWarnings("SameParameterValue")
690690
String createStillsUrl(@NonNull ThumbnailQuality qualityToUse, boolean includeViewTracking) {
691691
// Images could be upgraded to webp if they are not already, but this fails quite often,
692692
// especially for new videos uploaded in the last hour.

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,11 @@ public static void preloadVideoId(@NonNull String videoId, boolean isShortAndOpe
365365
if (videoId.equals(lastPrefetchedVideoId)) {
366366
return;
367367
}
368+
if (!Utils.isNetworkConnected()) {
369+
Logger.printDebug(() -> "Cannot pre-fetch RYD, network is not connected");
370+
lastPrefetchedVideoId = null;
371+
return;
372+
}
368373

369374
final boolean videoIdIsShort = VideoInformation.lastPlayerResponseIsShort();
370375
// Shorts shelf in home and subscription feed causes player response hook to be called,
@@ -419,6 +424,12 @@ public static void newVideoLoaded(@NonNull String videoId) {
419424
}
420425
Logger.printDebug(() -> "New video id: " + videoId + " playerType: " + currentPlayerType);
421426

427+
if (!Utils.isNetworkConnected()) {
428+
Logger.printDebug(() -> "Cannot fetch RYD, network is not connected");
429+
currentVideoData = null;
430+
return;
431+
}
432+
422433
ReturnYouTubeDislike data = ReturnYouTubeDislike.getFetchForVideoId(videoId);
423434
// Pre-emptively set the data to short status.
424435
// Required to prevent Shorts data from being used on a minimized video in incognito mode.

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,4 +354,23 @@ public static boolean isAtEndOfVideo() {
354354
return videoTime >= videoLength && videoLength > 0;
355355
}
356356

357+
/**
358+
* Overrides the current playback speed.
359+
* Rest of the implementation added by patch.
360+
*/
361+
public static void overridePlaybackSpeed(float speedOverride) {
362+
Logger.printDebug(() -> "Overriding playback speed to: " + speedOverride);
363+
}
364+
365+
/**
366+
* Injection point.
367+
*
368+
* @param newlyLoadedPlaybackSpeed The current playback speed.
369+
*/
370+
public static void setPlaybackSpeed(float newlyLoadedPlaybackSpeed) {
371+
if (playbackSpeed != newlyLoadedPlaybackSpeed) {
372+
Logger.printDebug(() -> "Video speed changed: " + newlyLoadedPlaybackSpeed);
373+
playbackSpeed = newlyLoadedPlaybackSpeed;
374+
}
375+
}
357376
}

extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,41 +10,25 @@
1010
*/
1111
public final class PlaybackSpeedMenuFilterPatch extends Filter {
1212

13-
/**
14-
* Old litho based speed selection menu.
15-
*/
16-
public static volatile boolean isOldPlaybackSpeedMenuVisible;
17-
1813
/**
1914
* 0.05x speed selection menu.
2015
*/
2116
public static volatile boolean isPlaybackRateSelectorMenuVisible;
2217

23-
private final StringFilterGroup oldPlaybackMenuGroup;
24-
2518
public PlaybackSpeedMenuFilterPatch() {
2619
// 0.05x litho speed menu.
2720
var playbackRateSelectorGroup = new StringFilterGroup(
2821
Settings.CUSTOM_SPEED_MENU,
2922
"playback_rate_selector_menu_sheet.eml-js"
3023
);
3124

32-
// Old litho based speed menu.
33-
oldPlaybackMenuGroup = new StringFilterGroup(
34-
Settings.CUSTOM_SPEED_MENU,
35-
"playback_speed_sheet_content.eml-js");
36-
37-
addPathCallbacks(playbackRateSelectorGroup, oldPlaybackMenuGroup);
25+
addPathCallbacks(playbackRateSelectorGroup);
3826
}
3927

4028
@Override
4129
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
4230
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
43-
if (matchedGroup == oldPlaybackMenuGroup) {
44-
isOldPlaybackSpeedMenuVisible = true;
45-
} else {
46-
isPlaybackRateSelectorMenuVisible = true;
47-
}
31+
isPlaybackRateSelectorMenuVisible = true;
4832

4933
return false;
5034
}

0 commit comments

Comments
 (0)