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
+