diff --git a/src/main/kotlin/app/revanced/patches/music/ads/general/GeneralAdsPatch.kt b/src/main/kotlin/app/revanced/patches/music/ads/general/GeneralAdsPatch.kt index 51fa34840..f0102c9a1 100644 --- a/src/main/kotlin/app/revanced/patches/music/ads/general/GeneralAdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/ads/general/GeneralAdsPatch.kt @@ -7,6 +7,7 @@ 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.ads.general.fingerprints.FloatingLayoutFingerprint +import app.revanced.patches.music.ads.general.fingerprints.InterstitialsContainerFingerprint import app.revanced.patches.music.ads.general.fingerprints.NotifierShelfFingerprint import app.revanced.patches.music.ads.music.MusicAdsPatch import app.revanced.patches.music.utils.integrations.Constants.ADS_PATH @@ -15,11 +16,11 @@ import app.revanced.patches.music.utils.litho.LithoFilterPatch import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.ButtonContainer import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.FloatingLayout +import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.InterstitialsContainer import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.SettingsPatch import app.revanced.util.exception import app.revanced.util.getWideLiteralInstructionIndex -import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( @@ -37,12 +38,28 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction object GeneralAdsPatch : BytecodePatch( setOf( FloatingLayoutFingerprint, + InterstitialsContainerFingerprint, NotifierShelfFingerprint ) ) { override fun execute(context: BytecodeContext) { LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR) + /** + * Hides interstitials banner (non-litho) + */ + InterstitialsContainerFingerprint.result?.let { + it.mutableMethod.apply { + val targetIndex = getWideLiteralInstructionIndex(InterstitialsContainer) + 2 + val targetRegister = getInstruction(targetIndex).registerA + + addInstruction( + targetIndex + 1, + "invoke-static {v$targetRegister}, $ADS_PATH/InterstitialsBannerPatch;->hideInterstitialsBanner(Landroid/view/View;)V" + ) + } + } ?: throw InterstitialsContainerFingerprint.exception + /** * Hides premium promotion popup */ diff --git a/src/main/kotlin/app/revanced/patches/music/ads/general/fingerprints/InterstitialsContainerFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/ads/general/fingerprints/InterstitialsContainerFingerprint.kt new file mode 100644 index 000000000..86dd38d5d --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/ads/general/fingerprints/InterstitialsContainerFingerprint.kt @@ -0,0 +1,13 @@ +package app.revanced.patches.music.ads.general.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.InterstitialsContainer +import app.revanced.util.fingerprint.LiteralValueFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +object InterstitialsContainerFingerprint : LiteralValueFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("Ljava/lang/Object;"), + literalSupplier = { InterstitialsContainer } +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt index e2510d010..5b94a7f67 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt @@ -25,6 +25,7 @@ object SharedResourceIdPatch : ResourcePatch() { var FloatingLayout: Long = -1 var HistoryMenuItem: Long = -1 var InlineTimeBarAdBreakMarkerColor: Long = -1 + var InterstitialsContainer: Long = -1 var IsTablet: Long = -1 var MenuEntry: Long = -1 var MusicMenuLikeButtons: Long = -1 @@ -55,6 +56,7 @@ object SharedResourceIdPatch : ResourcePatch() { FloatingLayout = find(ID, "floating_layout") HistoryMenuItem = find(ID, "history_menu_item") InlineTimeBarAdBreakMarkerColor = find(COLOR, "inline_time_bar_ad_break_marker_color") + InterstitialsContainer = find(ID, "interstitials_container") IsTablet = find(BOOL, "is_tablet") MenuEntry = find(LAYOUT, "menu_entry") MusicMenuLikeButtons = find(LAYOUT, "music_menu_like_buttons")