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 --> + +