diff --git a/extensions/shared/src/main/java/app/revanced/extension/music/patches/actionbar/ActionBarPatch.java b/extensions/shared/src/main/java/app/revanced/extension/music/patches/actionbar/ActionBarPatch.java index bcae6077d..8f20d153b 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/music/patches/actionbar/ActionBarPatch.java +++ b/extensions/shared/src/main/java/app/revanced/extension/music/patches/actionbar/ActionBarPatch.java @@ -19,6 +19,8 @@ import app.revanced.extension.shared.utils.PackageUtils; @SuppressWarnings("unused") public class ActionBarPatch { + private static final boolean CHANGE_ACTION_BAR_POSITION = + Settings.CHANGE_ACTION_BAR_POSITION.get(); private static final boolean HIDE_ACTION_BUTTON_LABEL = Settings.HIDE_ACTION_BUTTON_LABEL.get(); private static final boolean HIDE_ACTION_BUTTON_LIKE_DISLIKE = @@ -36,6 +38,12 @@ public class ActionBarPatch { @NonNull private static String buttonType = ""; + public static boolean changeActionBarPosition(boolean original) { + return SETTINGS_INITIALIZED + ? CHANGE_ACTION_BAR_POSITION + : original; + } + public static boolean hideActionBarLabel() { return HIDE_ACTION_BUTTON_LABEL; } diff --git a/extensions/shared/src/main/java/app/revanced/extension/music/settings/Settings.java b/extensions/shared/src/main/java/app/revanced/extension/music/settings/Settings.java index 3a7e842fd..dd0351ff1 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/music/settings/Settings.java +++ b/extensions/shared/src/main/java/app/revanced/extension/music/settings/Settings.java @@ -33,6 +33,7 @@ public class Settings extends BaseSettings { // PreferenceScreen: Action Bar + public static final BooleanSetting CHANGE_ACTION_BAR_POSITION = new BooleanSetting("revanced_change_action_bar_position", FALSE, true); public static final BooleanSetting HIDE_ACTION_BUTTON_LIKE_DISLIKE = new BooleanSetting("revanced_hide_action_button_like_dislike", FALSE, true); public static final BooleanSetting HIDE_ACTION_BUTTON_COMMENT = new BooleanSetting("revanced_hide_action_button_comment", FALSE, true); public static final BooleanSetting HIDE_ACTION_BUTTON_ADD_TO_PLAYLIST = new BooleanSetting("revanced_hide_action_button_add_to_playlist", FALSE, true); diff --git a/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/ActionBarComponentsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/ActionBarComponentsPatch.kt index 254576658..1d8747c28 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/ActionBarComponentsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/ActionBarComponentsPatch.kt @@ -25,6 +25,7 @@ import app.revanced.patches.shared.litho.addLithoFilter import app.revanced.patches.shared.litho.lithoFilterPatch import app.revanced.patches.shared.textcomponent.hookSpannableString import app.revanced.patches.shared.textcomponent.textComponentPatch +import app.revanced.util.fingerprint.injectLiteralInstructionBooleanCall import app.revanced.util.fingerprint.matchOrThrow import app.revanced.util.fingerprint.methodOrThrow import app.revanced.util.getReference @@ -77,6 +78,19 @@ val actionBarComponentsPatch = bytecodePatch( nop """ ) + + if (is_7_25_or_greater) { + actionBarPositionFeatureFlagFingerprint.injectLiteralInstructionBooleanCall( + ACTION_BAR_POSITION_FEATURE_FLAG, + "$ACTIONBAR_CLASS_DESCRIPTOR->changeActionBarPosition(Z)Z" + ) + + addSwitchPreference( + CategoryType.ACTION_BAR, + "revanced_change_action_bar_position", + "false" + ) + } } if (!is_7_25_or_greater) { diff --git a/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/Fingerprints.kt index 0584f618f..5a170ac93 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/actionbar/components/Fingerprints.kt @@ -22,6 +22,15 @@ internal val actionBarComponentFingerprint = legacyFingerprint( literals = listOf(99180L), ) +internal const val ACTION_BAR_POSITION_FEATURE_FLAG = 45658717L + +internal val actionBarPositionFeatureFlagFingerprint = legacyFingerprint( + name = "actionBarPositionFeatureFlagFingerprint", + returnType = "Z", + parameters = emptyList(), + literals = listOf(ACTION_BAR_POSITION_FEATURE_FLAG) +) + internal val likeDislikeContainerFingerprint = legacyFingerprint( name = "likeDislikeContainerFingerprint", returnType = "V", diff --git a/patches/src/main/resources/music/settings/host/values/strings.xml b/patches/src/main/resources/music/settings/host/values/strings.xml index 7b57b03fd..8e8ba67d3 100644 --- a/patches/src/main/resources/music/settings/host/values/strings.xml +++ b/patches/src/main/resources/music/settings/host/values/strings.xml @@ -26,6 +26,8 @@ Action bar + Change action bar position + Moves the action bar below the play button. Hide Like and Dislike buttons Hides the Like and Dislike buttons. It does not work in the old player layout. Hide Comments button