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