@@ -13,6 +13,8 @@ import app.morphe.patches.shared.misc.settings.preference.SwitchPreference
1313import app.morphe.patches.youtube.misc.contexthook.Endpoint
1414import app.morphe.patches.youtube.misc.contexthook.addOSNameHook
1515import app.morphe.patches.youtube.misc.contexthook.clientContextHookPatch
16+ import app.morphe.patches.youtube.misc.engagement.addEngagementPanelIdHook
17+ import app.morphe.patches.youtube.misc.engagement.engagementPanelHookPatch
1618import app.morphe.patches.youtube.misc.fix.backtoexitgesture.fixBackToExitGesturePatch
1719import app.morphe.patches.youtube.misc.litho.filter.addLithoFilter
1820import app.morphe.patches.youtube.misc.litho.filter.lithoFilterPatch
@@ -35,19 +37,19 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
3537import com.android.tools.smali.dexlib2.iface.reference.FieldReference
3638import com.android.tools.smali.dexlib2.iface.reference.MethodReference
3739
40+ private const val EXTENSION_CLASS_DESCRIPTOR =
41+ " Lapp/morphe/extension/youtube/patches/components/AdsFilter;"
42+
3843internal var adAttributionId = - 1L
3944 private set
40- internal var fullScreenEngagementAdContainer = - 1L
41- private set
42-
43- private const val EXTENSION_CLASS_DESCRIPTOR = " Lapp/morphe/extension/youtube/patches/components/AdsFilter;"
4445
4546private val hideAdsResourcePatch = resourcePatch {
4647 dependsOn(
4748 lithoFilterPatch,
4849 settingsPatch,
4950 resourceMappingPatch,
5051 clientContextHookPatch,
52+ engagementPanelHookPatch,
5153 )
5254
5355 execute {
@@ -57,16 +59,17 @@ private val hideAdsResourcePatch = resourcePatch {
5759 SwitchPreference (" morphe_hide_general_ads" ),
5860 SwitchPreference (" morphe_hide_merchandise_banners" ),
5961 SwitchPreference (" morphe_hide_paid_promotion_label" ),
62+ SwitchPreference (" morphe_hide_player_popup_ads" ),
6063 SwitchPreference (" morphe_hide_self_sponsor_ads" ),
6164 SwitchPreference (" morphe_hide_shopping_links" ),
6265 SwitchPreference (" morphe_hide_view_products_banner" ),
6366 SwitchPreference (" morphe_hide_youtube_premium_promotions" ),
6467 )
6568
66- addLithoFilter(" Lapp/morphe/extension/youtube/patches/components/AdsFilter;" )
69+ addLithoFilter(EXTENSION_CLASS_DESCRIPTOR )
70+ addEngagementPanelIdHook(" $EXTENSION_CLASS_DESCRIPTOR ->hidePlayerPopupAds(Ljava/lang/String;)Z" )
6771
6872 adAttributionId = getResourceId(ResourceType .ID , " ad_attribution" )
69- fullScreenEngagementAdContainer = getResourceId(ResourceType .ID , " fullscreen_engagement_ad_container" )
7073 }
7174}
7275
@@ -87,17 +90,19 @@ val hideAdsPatch = bytecodePatch(
8790 execute {
8891 // Hide end screen store banner
8992
90- FullScreenEngagementAdContainerFingerprint .method.apply {
91- val addListIndex = indexOfAddListInstruction(this )
92- val addListInstruction = getInstruction<FiveRegisterInstruction >(addListIndex)
93- val listRegister = addListInstruction.registerC
94- val objectRegister = addListInstruction.registerD
93+ FullScreenEngagementAdContainerFingerprint .let {
94+ it.method.apply {
95+ val insertIndex = it.instructionMatches[3 ].index
96+ val insertInstruction = getInstruction<FiveRegisterInstruction >(insertIndex)
97+ val listRegister = insertInstruction.registerC
98+ val objectRegister = insertInstruction.registerD
9599
96- replaceInstruction(
97- addListIndex,
98- " invoke-static { v$listRegister , v$objectRegister }, $EXTENSION_CLASS_DESCRIPTOR " +
99- " ->hideEndScreenStoreBanner(Ljava/util/List;Ljava/lang/Object;)V"
100- )
100+ replaceInstruction(
101+ insertIndex,
102+ " invoke-static { v$listRegister , v$objectRegister }, $EXTENSION_CLASS_DESCRIPTOR ->" +
103+ " hideEndScreenStoreBanner(Ljava/util/List;Ljava/lang/Object;)V"
104+ )
105+ }
101106 }
102107
103108 // Hide fullscreen ad
0 commit comments