feat(YouTube Music/Hide action bar component): add Hide Like and Dislike buttons settings

This commit is contained in:
inotia00 2024-01-17 19:47:26 +09:00
parent dd2f636a4a
commit 9811ec74de
4 changed files with 42 additions and 1 deletions

View File

@ -10,12 +10,16 @@ import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.music.actionbar.component.fingerprints.ActionBarComponentFingerprint import app.revanced.patches.music.actionbar.component.fingerprints.ActionBarComponentFingerprint
import app.revanced.patches.music.actionbar.component.fingerprints.LikeDislikeContainerFingerprint
import app.revanced.patches.music.utils.integrations.Constants.ACTIONBAR import app.revanced.patches.music.utils.integrations.Constants.ACTIONBAR
import app.revanced.patches.music.utils.intenthook.IntentHookPatch import app.revanced.patches.music.utils.intenthook.IntentHookPatch
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.LikeDislikeContainer
import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.CategoryType
import app.revanced.patches.music.utils.settings.SettingsPatch import app.revanced.patches.music.utils.settings.SettingsPatch
import app.revanced.patches.music.video.information.VideoInformationPatch import app.revanced.patches.music.video.information.VideoInformationPatch
import app.revanced.util.exception import app.revanced.util.exception
import app.revanced.util.getWideLiteralInstructionIndex
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@ -30,13 +34,17 @@ import kotlin.math.min
dependencies = [ dependencies = [
IntentHookPatch::class, IntentHookPatch::class,
SettingsPatch::class, SettingsPatch::class,
SharedResourceIdPatch::class,
VideoInformationPatch::class VideoInformationPatch::class
], ],
compatiblePackages = [CompatiblePackage("com.google.android.apps.youtube.music")] compatiblePackages = [CompatiblePackage("com.google.android.apps.youtube.music")]
) )
@Suppress("unused") @Suppress("unused")
object ActionBarComponentPatch : BytecodePatch( object ActionBarComponentPatch : BytecodePatch(
setOf(ActionBarComponentFingerprint) setOf(
ActionBarComponentFingerprint,
LikeDislikeContainerFingerprint
)
) { ) {
private var spannedReference = "" private var spannedReference = ""
@ -124,6 +132,18 @@ object ActionBarComponentPatch : BytecodePatch(
} }
} ?: throw ActionBarComponentFingerprint.exception } ?: throw ActionBarComponentFingerprint.exception
LikeDislikeContainerFingerprint.result?.let {
it.mutableMethod.apply {
val insertIndex = getWideLiteralInstructionIndex(LikeDislikeContainer) + 2
val insertRegister = getInstruction<OneRegisterInstruction>(insertIndex).registerA
addInstruction(
insertIndex + 1,
"invoke-static {v$insertRegister}, $ACTIONBAR->hideLikeDislikeButton(Landroid/view/View;)V"
)
}
} ?: throw LikeDislikeContainerFingerprint.exception
SettingsPatch.addMusicPreference( SettingsPatch.addMusicPreference(
CategoryType.ACTION_BAR, CategoryType.ACTION_BAR,
"revanced_hide_action_button_add_to_playlist", "revanced_hide_action_button_add_to_playlist",
@ -144,6 +164,11 @@ object ActionBarComponentPatch : BytecodePatch(
"revanced_hide_action_button_label", "revanced_hide_action_button_label",
"false" "false"
) )
SettingsPatch.addMusicPreference(
CategoryType.ACTION_BAR,
"revanced_hide_action_button_like_dislike",
"false"
)
SettingsPatch.addMusicPreference( SettingsPatch.addMusicPreference(
CategoryType.ACTION_BAR, CategoryType.ACTION_BAR,
"revanced_hide_action_button_radio", "revanced_hide_action_button_radio",

View File

@ -0,0 +1,12 @@
package app.revanced.patches.music.actionbar.component.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.LikeDislikeContainer
import app.revanced.util.fingerprint.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
object LikeDislikeContainerFingerprint : LiteralValueFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
literalSupplier = { LikeDislikeContainer }
)

View File

@ -27,6 +27,7 @@ object SharedResourceIdPatch : ResourcePatch() {
var InlineTimeBarAdBreakMarkerColor: Long = -1 var InlineTimeBarAdBreakMarkerColor: Long = -1
var InterstitialsContainer: Long = -1 var InterstitialsContainer: Long = -1
var IsTablet: Long = -1 var IsTablet: Long = -1
var LikeDislikeContainer: Long = -1
var MenuEntry: Long = -1 var MenuEntry: Long = -1
var MusicMenuLikeButtons: Long = -1 var MusicMenuLikeButtons: Long = -1
var MusicNotifierShelf: Long = -1 var MusicNotifierShelf: Long = -1
@ -58,6 +59,7 @@ object SharedResourceIdPatch : ResourcePatch() {
InlineTimeBarAdBreakMarkerColor = find(COLOR, "inline_time_bar_ad_break_marker_color") InlineTimeBarAdBreakMarkerColor = find(COLOR, "inline_time_bar_ad_break_marker_color")
InterstitialsContainer = find(ID, "interstitials_container") InterstitialsContainer = find(ID, "interstitials_container")
IsTablet = find(BOOL, "is_tablet") IsTablet = find(BOOL, "is_tablet")
LikeDislikeContainer = find(ID, "like_dislike_container")
MenuEntry = find(LAYOUT, "menu_entry") MenuEntry = find(LAYOUT, "menu_entry")
MusicMenuLikeButtons = find(LAYOUT, "music_menu_like_buttons") MusicMenuLikeButtons = find(LAYOUT, "music_menu_like_buttons")
MusicNotifierShelf = find(LAYOUT, "music_notifier_shelf") MusicNotifierShelf = find(LAYOUT, "music_notifier_shelf")

View File

@ -101,6 +101,8 @@ WARNING: Do not enable "New player background" while this is enabled."</string>
<string name="revanced_hide_action_button_download_title">Hide download button</string> <string name="revanced_hide_action_button_download_title">Hide download button</string>
<string name="revanced_hide_action_button_label_summary">Hides labels in action buttons.</string> <string name="revanced_hide_action_button_label_summary">Hides labels in action buttons.</string>
<string name="revanced_hide_action_button_label_title">Hide action button labels</string> <string name="revanced_hide_action_button_label_title">Hide action button labels</string>
<string name="revanced_hide_action_button_like_dislike_summary">Hides the like and dislike buttons. It does not work in the old player layout.</string>
<string name="revanced_hide_action_button_like_dislike_title">Hide like and dislike buttons</string>
<string name="revanced_hide_action_button_radio_summary">Hides start radio button.</string> <string name="revanced_hide_action_button_radio_summary">Hides start radio button.</string>
<string name="revanced_hide_action_button_radio_title">Hide radio button</string> <string name="revanced_hide_action_button_radio_title">Hide radio button</string>
<string name="revanced_hide_action_button_share_summary">Hides share button.</string> <string name="revanced_hide_action_button_share_summary">Hides share button.</string>