From 87d0eecb83ec7bbe603ab0f4fd4d3fe63faf6fe8 Mon Sep 17 00:00:00 2001
From: Mizuki <133373431+hyperssmp@users.noreply.github.com>
Date: Fri, 26 Jul 2024 13:59:40 +0700
Subject: [PATCH] feat(YouTube/Player components): add `Hide zoom overlay`
setting (#67)
* Update SharedResourceIdPatch.kt
* Add patches
* Add fingerprints
* Update strings.xml
* Update revanced_prefs.xml
* feat: apply code review suggestions
* feat: apply code review suggestions
---------
Co-authored-by: inotia00 <108592928+inotia00@users.noreply.github.com>
---
.../player/components/PlayerComponentsPatch.kt | 17 +++++++++++++++++
.../VideoZoomSnapIndicatorFingerprint.kt | 12 ++++++++++++
.../utils/resourceid/SharedResourceIdPatch.kt | 4 +++-
.../youtube/settings/host/values/strings.xml | 3 +++
.../youtube/settings/xml/revanced_prefs.xml | 5 +++--
5 files changed, 38 insertions(+), 3 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/player/components/fingerprints/VideoZoomSnapIndicatorFingerprint.kt
diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt
index da75bbcbd..cf863f8cc 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt
@@ -28,6 +28,7 @@ import app.revanced.patches.youtube.player.components.fingerprints.QuickSeekOver
import app.revanced.patches.youtube.player.components.fingerprints.SeekEduContainerFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.SuggestedActionsFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.TouchAreaOnClickListenerFingerprint
+import app.revanced.patches.youtube.player.components.fingerprints.VideoZoomSnapIndicatorFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.WatermarkFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.WatermarkParentFingerprint
import app.revanced.patches.youtube.player.speedoverlay.SpeedOverlayPatch
@@ -90,6 +91,7 @@ object PlayerComponentsPatch : BaseBytecodePatch(
StartVideoInformerFingerprint,
SuggestedActionsFingerprint,
TouchAreaOnClickListenerFingerprint,
+ VideoZoomSnapIndicatorFingerprint,
WatermarkParentFingerprint,
YouTubeControlsOverlayFingerprint,
)
@@ -394,6 +396,21 @@ object PlayerComponentsPatch : BaseBytecodePatch(
// endregion
+ // region patch for hide video zoom overlay
+
+ VideoZoomSnapIndicatorFingerprint.resultOrThrow().mutableMethod.apply {
+ addInstructionsWithLabels(
+ 0, """
+ invoke-static {}, $PLAYER_CLASS_DESCRIPTOR->hideZoomOverlay()Z
+ move-result v0
+ if-eqz v0, :shown
+ return-void
+ """, ExternalLabel("shown", getInstruction(0))
+ )
+ }
+
+ // endregion
+
LithoFilterPatch.addFilter(PLAYER_COMPONENTS_FILTER_CLASS_DESCRIPTOR)
/**
diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/components/fingerprints/VideoZoomSnapIndicatorFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/components/fingerprints/VideoZoomSnapIndicatorFingerprint.kt
new file mode 100644
index 000000000..f03138eb5
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/player/components/fingerprints/VideoZoomSnapIndicatorFingerprint.kt
@@ -0,0 +1,12 @@
+package app.revanced.patches.youtube.player.components.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.VideoZoomSnapIndicator
+import app.revanced.util.fingerprint.LiteralValueFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+
+internal object VideoZoomSnapIndicatorFingerprint : LiteralValueFingerprint(
+ returnType = "V",
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
+ literalSupplier = { VideoZoomSnapIndicator }
+)
diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/resourceid/SharedResourceIdPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/resourceid/SharedResourceIdPatch.kt
index a696b5919..3a5bca2e5 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/utils/resourceid/SharedResourceIdPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/utils/resourceid/SharedResourceIdPatch.kt
@@ -110,6 +110,7 @@ object SharedResourceIdPatch : ResourcePatch() {
var VideoQualityBottomSheet = -1L
var VarispeedUnavailableTitle = -1L
var VideoQualityUnavailableAnnouncement = -1L
+ var VideoZoomSnapIndicator = -1L
var VoiceSearch = -1L
var YouTubeControlsOverlaySubtitleButton = -1L
var YtOutlinePictureInPictureWhite = -1L
@@ -218,6 +219,7 @@ object SharedResourceIdPatch : ResourcePatch() {
VarispeedUnavailableTitle = getId(STRING, "varispeed_unavailable_title")
VideoQualityUnavailableAnnouncement =
getId(STRING, "video_quality_unavailable_announcement")
+ VideoZoomSnapIndicator = getId(ID, "video_zoom_snap_indicator")
VoiceSearch = getId(ID, "voice_search")
YouTubeControlsOverlaySubtitleButton =
getId(LAYOUT, "youtube_controls_overlay_subtitle_button")
@@ -228,4 +230,4 @@ object SharedResourceIdPatch : ResourcePatch() {
YtWordMarkHeader = getId(ATTR, "ytWordmarkHeader")
}
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml
index 79ab3c6c4..e8802fd02 100644
--- a/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/src/main/resources/youtube/settings/host/values/strings.xml
@@ -570,6 +570,9 @@ Note:
Autoplay can be changed in YouTube settings:
Settings → Autoplay → Autoplay next video"
Suggested video end screen is shown.
+ Hide zoom overlay
+ Zoom overlay is hidden.
+ Zoom overlay is shown.
Skip autoplay countdown
If autoplay is enabled, the next video will play immediately.
If autoplay is enabled, the next video will play after the countdown ends.
diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
index 5851952c2..5874def65 100644
--- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -454,7 +454,8 @@
- SETTINGS: PLAYER_COMPONENTS -->
+
+ SETTINGS: PLAYER_COMPONENTS -->
@@ -744,4 +745,4 @@
-
\ No newline at end of file
+