From 22aa0f353e3f0579f2baf57cbe57acc10df39ebc Mon Sep 17 00:00:00 2001
From: inotia00 <108592928+inotia00@users.noreply.github.com>
Date: Sun, 23 Jun 2024 14:21:25 +0900
Subject: [PATCH] feat(YouTube/Miniplayer): add `Enable drag and drop` setting
(YouTube 19.23.40+)
---
.../general/miniplayer/MiniplayerPatch.kt | 17 +++++++++++++++++
.../MiniplayerModernDragAndDropFingerprint.kt | 12 ++++++++++++
.../youtube/settings/host/values/strings.xml | 3 +++
.../youtube/settings/xml/revanced_prefs.xml | 7 ++++++-
4 files changed, 38 insertions(+), 1 deletion(-)
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernDragAndDropFingerprint.kt
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 5b22135e1..2aa8ba3b2 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
@@ -12,6 +12,7 @@ import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerDi
import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerModernAddViewListenerFingerprint
import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerModernCloseButtonFingerprint
import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerModernConstructorFingerprint
+import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerModernDragAndDropFingerprint
import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerModernExpandButtonFingerprint
import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerModernExpandCloseDrawablesFingerprint
import app.revanced.patches.youtube.general.miniplayer.fingerprints.MiniplayerModernForwardButtonFingerprint
@@ -41,6 +42,7 @@ import app.revanced.util.getReference
import app.revanced.util.getWalkerMethod
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfWideLiteralInstructionOrThrow
+import app.revanced.util.literalInstructionBooleanHook
import app.revanced.util.patch.BaseBytecodePatch
import app.revanced.util.resultOrThrow
import app.revanced.util.updatePatchStatus
@@ -72,6 +74,7 @@ object MiniplayerPatch : BaseBytecodePatch(
MiniplayerResponseModelSizeCheckFingerprint,
MiniplayerOverrideFingerprint,
MiniplayerModernConstructorFingerprint,
+ MiniplayerModernDragAndDropFingerprint,
MiniplayerModernViewParentFingerprint,
YouTubePlayerOverlaysLayoutFingerprint,
)
@@ -278,6 +281,20 @@ object MiniplayerPatch : BaseBytecodePatch(
// endregion
+
+ // region Enable drag and drop.
+
+ if (SettingsPatch.upward1923) {
+ MiniplayerModernDragAndDropFingerprint.literalInstructionBooleanHook(
+ 45628752,
+ "$INTEGRATIONS_CLASS_DESCRIPTOR->enableMiniplayerDragAndDrop()Z"
+ )
+ settingArray += "SETTINGS: MINIPLAYER_DRAG_AND_DROP"
+ }
+
+ // endregion
+
+
if (SettingsPatch.upward1920) {
context.updatePatchStatus(PATCH_STATUS_CLASS_DESCRIPTOR, "MiniplayerType1920")
}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernDragAndDropFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernDragAndDropFingerprint.kt
new file mode 100644
index 000000000..d0b567c19
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/fingerprints/MiniplayerModernDragAndDropFingerprint.kt
@@ -0,0 +1,12 @@
+package app.revanced.patches.youtube.general.miniplayer.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.util.fingerprint.LiteralValueFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+
+@Suppress("SpellCheckingInspection")
+internal object MiniplayerModernDragAndDropFingerprint : LiteralValueFingerprint(
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
+ parameters = listOf("L"),
+ literalSupplier = { 45628752 }
+)
\ 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 e1a9470b7..1a9a99f49 100644
--- a/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/src/main/resources/youtube/settings/host/values/strings.xml
@@ -380,6 +380,9 @@ 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.
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 3e8dd4c33..2a6e9a2cd 100644
--- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -126,7 +126,12 @@
+
+
+
+