diff --git a/src/main/kotlin/app/revanced/patches/music/player/oldplayerlayout/OldPlayerLayoutPatch.kt b/src/main/kotlin/app/revanced/patches/music/player/oldplayerlayout/OldPlayerLayoutPatch.kt new file mode 100644 index 000000000..377b1c2f7 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/player/oldplayerlayout/OldPlayerLayoutPatch.kt @@ -0,0 +1,56 @@ +package app.revanced.patches.music.player.oldplayerlayout + +import app.revanced.extensions.exception +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.music.utils.fingerprints.NewPlayerLayoutFingerprint +import app.revanced.patches.music.utils.settings.SettingsPatch +import app.revanced.util.enum.CategoryType +import app.revanced.util.integrations.Constants.MUSIC_PLAYER + +@Patch( + name = "Enable old player layout", + description = "Return the player layout to old style.", + dependencies = [SettingsPatch::class], + compatiblePackages = [ + CompatiblePackage( + "com.google.android.apps.youtube.music", + [ + "6.15.52", + "6.20.51", + "6.21.51", + "6.22.51" + ] + ) + ], + use = false +) +@Suppress("unused") +object OldPlayerLayoutPatch : BytecodePatch( + setOf(NewPlayerLayoutFingerprint) +) { + override fun execute(context: BytecodeContext) { + + NewPlayerLayoutFingerprint.result?.let { + it.mutableMethod.apply { + addInstructions( + 0, """ + invoke-static {}, $MUSIC_PLAYER->enableOldPlayerLayout()Z + move-result v0 + return v0 + """ + ) + } + } ?: throw NewPlayerLayoutFingerprint.exception + + SettingsPatch.addMusicPreference( + CategoryType.PLAYER, + "revanced_enable_old_player_layout", + "false" + ) + + } +} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/utils/settings/fingerprints/NewPlayerLayoutFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/utils/fingerprints/NewPlayerLayoutFingerprint.kt similarity index 83% rename from src/main/kotlin/app/revanced/patches/music/utils/settings/fingerprints/NewPlayerLayoutFingerprint.kt rename to src/main/kotlin/app/revanced/patches/music/utils/fingerprints/NewPlayerLayoutFingerprint.kt index 2ddc28fb2..b6036d649 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/settings/fingerprints/NewPlayerLayoutFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/fingerprints/NewPlayerLayoutFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.music.utils.settings.fingerprints +package app.revanced.patches.music.utils.fingerprints import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.util.bytecode.isWide32LiteralExists diff --git a/src/main/kotlin/app/revanced/patches/music/utils/settings/SettingsBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/settings/SettingsBytecodePatch.kt index 685f7289e..7a378171a 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/settings/SettingsBytecodePatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/settings/SettingsBytecodePatch.kt @@ -7,7 +7,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.music.utils.integrations.IntegrationsPatch -import app.revanced.patches.music.utils.settings.fingerprints.NewPlayerLayoutFingerprint +import app.revanced.patches.music.utils.fingerprints.NewPlayerLayoutFingerprint import app.revanced.patches.music.utils.settings.fingerprints.PreferenceFingerprint import app.revanced.patches.music.utils.settings.fingerprints.SettingsHeadersFragmentFingerprint import app.revanced.util.bytecode.BytecodeHelper.injectInit diff --git a/src/main/resources/music/settings/host/values/strings.xml b/src/main/resources/music/settings/host/values/strings.xml index 1be727acd..d0beae626 100644 --- a/src/main/resources/music/settings/host/values/strings.xml +++ b/src/main/resources/music/settings/host/values/strings.xml @@ -36,6 +36,11 @@ Enable landscape mode Enables new player background. Enable new player background + "Return the player layout to old style. +Some settings may not work properly in the old player layout. + +WARNING: Do not enable new player backgrounds while this is enabled" + Enable old player layout Return the library shelf to old style. (Experimental) Enable old style library shelf Return the mini players to old style.