From 6d3a61fdcd343e8a772dfbc46f68eb6edf48d55c Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Fri, 5 Jul 2024 15:21:30 +0900 Subject: [PATCH] feat(YouTube/Miniplayer): add `Enable double-tap action` setting --- .../general/miniplayer/MiniplayerPatch.kt | 16 ++++++++++++++++ .../MiniplayerModernConstructorFingerprint.kt | 7 ++++++- .../youtube/settings/host/values/strings.xml | 8 ++++---- .../youtube/settings/xml/revanced_prefs.xml | 3 +++ 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/MiniplayerPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/MiniplayerPatch.kt index fa41caa83..309a3172e 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/MiniplayerPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/MiniplayerPatch.kt @@ -178,6 +178,22 @@ object MiniplayerPatch : BaseBytecodePatch( // endregion + // region Enable double tap action. + + if (SettingsPatch.upward1925) { + MiniplayerModernConstructorFingerprint.literalInstructionBooleanHook( + 45628823, + "$INTEGRATIONS_CLASS_DESCRIPTOR->enableMiniplayerDoubleTapAction()Z" + ) + MiniplayerModernConstructorFingerprint.literalInstructionBooleanHook( + 45630429, + "$INTEGRATIONS_CLASS_DESCRIPTOR->getModernMiniplayerOverride(Z)Z" + ) + settingArray += "SETTINGS: MINIPLAYER_DOUBLE_TAP_ACTION" + } + + // endregion + val miniplayerModernViewParentClassDef = MiniplayerModernViewParentFingerprint.resultOrThrow().classDef // region Fix 19.16 using mixed up drawables for tablet modern. diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernConstructorFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernConstructorFingerprint.kt index 560567ed7..47b8480c3 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernConstructorFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernConstructorFingerprint.kt @@ -20,7 +20,12 @@ internal object MiniplayerModernConstructorFingerprint : MethodFingerprint( if (MethodUtil.isConstructor(it)) constructorMethodCount += 1 } - constructorMethodCount > 0 + if (!SettingsPatch.upward1925) + return@custom true + + // Double tap action (Used in YouTube 19.25.39+). + methodDef.containsWideLiteralInstructionIndex(45628823) + && methodDef.containsWideLiteralInstructionIndex(45630429) } ) { private var constructorMethodCount = 0 diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 5189077dd..c35ac0423 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -387,15 +387,15 @@ Some components may not be hidden." Modern 1 Modern 2 Modern 3 - Enable drag and drop - Drag and drop is enabled. - Drag and drop is disabled. - Double-tap action + Enable double-tap action "Double-tap action is enabled. • Modern 1: Double-tap to change the minimized video to a larger size. • Modern 2, 3: Double-tap to close the minimized video." Double-tap action is disabled. + Enable drag and drop + Drag and drop is enabled. + Drag and drop is disabled. Hide expand and close buttons Buttons are hidden.\n(swipe miniplayer to expand or close) Expand and close buttons are shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 75f916c90..eebb71fc2 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -130,6 +130,9 @@ SETTINGS: MINIPLAYER_TYPE_MODERN --> + +