From 4774bd10e803efadab188a6855c7ca067dd50149 Mon Sep 17 00:00:00 2001
From: inotia00 <108592928+inotia00@users.noreply.github.com>
Date: Thu, 25 Apr 2024 23:00:48 +0900
Subject: [PATCH] feat(YouTube/Hide player flyout menu): add `Hide
picture-in-picture menu` settings
---
.../flyoutmenu/hide/PlayerFlyoutMenuPatch.kt | 16 ++++++++++++++++
.../fingerprints/PiPModeConfigFingerprint.kt | 10 ++++++++++
...ollingNumberMeasureAnimatedTextFingerprint.kt | 2 +-
.../youtube/settings/host/values/strings.xml | 3 +++
.../youtube/settings/xml/revanced_prefs.xml | 5 ++++-
5 files changed, 34 insertions(+), 2 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/fingerprints/PiPModeConfigFingerprint.kt
diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt
index b45f396aa..717aeffc1 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt
@@ -4,6 +4,7 @@ import app.revanced.patcher.data.BytecodeContext
import app.revanced.patches.shared.litho.LithoFilterPatch
import app.revanced.patches.youtube.player.flyoutmenu.hide.fingerprints.AdvancedQualityBottomSheetFingerprint
import app.revanced.patches.youtube.player.flyoutmenu.hide.fingerprints.CaptionsBottomSheetFingerprint
+import app.revanced.patches.youtube.player.flyoutmenu.hide.fingerprints.PiPModeConfigFingerprint
import app.revanced.patches.youtube.utils.fingerprints.QualityMenuViewInflateFingerprint
import app.revanced.patches.youtube.utils.integrations.Constants.COMPATIBLE_PACKAGE
import app.revanced.patches.youtube.utils.integrations.Constants.COMPONENTS_PATH
@@ -12,6 +13,7 @@ import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.BottomSheetFooterText
import app.revanced.patches.youtube.utils.settings.SettingsPatch
+import app.revanced.util.literalInstructionBooleanHook
import app.revanced.util.literalInstructionViewHook
import app.revanced.util.patch.BaseBytecodePatch
@@ -29,6 +31,7 @@ object PlayerFlyoutMenuPatch : BaseBytecodePatch(
fingerprints = setOf(
AdvancedQualityBottomSheetFingerprint,
CaptionsBottomSheetFingerprint,
+ PiPModeConfigFingerprint,
QualityMenuViewInflateFingerprint
)
) {
@@ -36,6 +39,7 @@ object PlayerFlyoutMenuPatch : BaseBytecodePatch(
"$COMPONENTS_PATH/PlayerFlyoutMenuFilter;"
override fun execute(context: BytecodeContext) {
+
arrayOf(
AdvancedQualityBottomSheetFingerprint to "hideFooterQuality",
CaptionsBottomSheetFingerprint to "hideFooterCaptions",
@@ -58,5 +62,17 @@ object PlayerFlyoutMenuPatch : BaseBytecodePatch(
)
SettingsPatch.updatePatchStatus(this)
+
+ if (SettingsPatch.upward1839) {
+ PiPModeConfigFingerprint.literalInstructionBooleanHook(
+ 45427407,
+ "$PLAYER_CLASS_DESCRIPTOR->hidePiPModeMenu(Z)Z"
+ )
+ SettingsPatch.addPreference(
+ arrayOf(
+ "SETTINGS: HIDE_PIP_MODE_MENU"
+ )
+ )
+ }
}
}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/fingerprints/PiPModeConfigFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/fingerprints/PiPModeConfigFingerprint.kt
new file mode 100644
index 000000000..f68f793ac
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/fingerprints/PiPModeConfigFingerprint.kt
@@ -0,0 +1,10 @@
+package app.revanced.patches.youtube.player.flyoutmenu.hide.fingerprints
+
+import app.revanced.util.fingerprint.LiteralValueFingerprint
+
+ /**
+ * This fingerprint is compatible with YouTube v18.39.xx+
+ */
+internal object PiPModeConfigFingerprint : LiteralValueFingerprint(
+ literalSupplier = { 45427407 }
+)
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/rollingnumber/fingerprints/RollingNumberMeasureAnimatedTextFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/rollingnumber/fingerprints/RollingNumberMeasureAnimatedTextFingerprint.kt
index 12511e972..80ceaec83 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/rollingnumber/fingerprints/RollingNumberMeasureAnimatedTextFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/utils/returnyoutubedislike/rollingnumber/fingerprints/RollingNumberMeasureAnimatedTextFingerprint.kt
@@ -4,7 +4,7 @@ import app.revanced.util.fingerprint.ReferenceFingerprint
import com.android.tools.smali.dexlib2.Opcode
/**
- * Compatible with YouTube v18.30.xx to v18.49.xx
+ * This fingerprint is compatible with YouTube v18.30.xx+
*/
internal object RollingNumberMeasureAnimatedTextFingerprint : ReferenceFingerprint(
opcodes = listOf(
diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml
index b63a9328b..5ee662d55 100644
--- a/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/src/main/resources/youtube/settings/host/values/strings.xml
@@ -565,6 +565,9 @@ Instead, use the 'Settings → Autoplay → Autoplay next video' setting."Hide loop video menu
Loop video menu is hidden.
Loop video menu is shown.
+ Hide picture-in-picture menu
+ Picture-in-picture menu is hidden.
+ Picture-in-picture menu is shown.
Hide premium controls menu
Premium controls menu is hidden.
Premium controls menu is shown.
diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
index b534005d2..9085efdd8 100644
--- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -236,7 +236,10 @@
-
+ SETTINGS: HIDE_PLAYER_FLYOUT_MENU -->
+
+