mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-12 20:33:55 +01:00
fix(YouTube - Hide end screen cards): Hide new type of end screen card (#6027)
This commit is contained in:
committed by
GitHub
parent
1cbff799ad
commit
76b0364c5b
@@ -0,0 +1,24 @@
|
|||||||
|
package app.revanced.extension.youtube.patches;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import app.revanced.extension.shared.Utils;
|
||||||
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class HideEndScreenCardsPatch {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static void hideEndScreenCardView(View view) {
|
||||||
|
Utils.hideViewUnderCondition(Settings.HIDE_ENDSCREEN_CARDS, view);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static boolean hideEndScreenCards() {
|
||||||
|
return Settings.HIDE_ENDSCREEN_CARDS.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package app.revanced.extension.youtube.patches;
|
|
||||||
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import app.revanced.extension.youtube.settings.Settings;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public class HideEndscreenCardsPatch {
|
|
||||||
//Used by app.revanced.patches.youtube.layout.hideendscreencards.bytecode.patch.HideEndscreenCardsPatch
|
|
||||||
public static void hideEndscreen(View view) {
|
|
||||||
if (!Settings.HIDE_ENDSCREEN_CARDS.get()) return;
|
|
||||||
view.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1411,8 +1411,8 @@ public final class app/revanced/patches/youtube/layout/formfactor/ChangeFormFact
|
|||||||
public static final fun getChangeFormFactorPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getChangeFormFactorPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/youtube/layout/hide/endscreencards/HideEndscreenCardsPatchKt {
|
public final class app/revanced/patches/youtube/layout/hide/endscreencards/HideEndScreenCardsPatchKt {
|
||||||
public static final fun getHideEndscreenCardsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getHideEndScreenCardsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatchKt {
|
public final class app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatchKt {
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
package app.revanced.patches.youtube.layout.hide.endscreencards
|
package app.revanced.patches.youtube.layout.hide.endscreencards
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
|
import app.revanced.util.containsLiteralInstruction
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstruction
|
||||||
import app.revanced.util.literal
|
import app.revanced.util.literal
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
|
|
||||||
internal val layoutCircleFingerprint = fingerprint {
|
internal val layoutCircleFingerprint = fingerprint {
|
||||||
returns("Landroid/view/View;")
|
returns("Landroid/view/View;")
|
||||||
@@ -38,3 +43,19 @@ internal val layoutVideoFingerprint = fingerprint {
|
|||||||
)
|
)
|
||||||
literal { layoutVideo }
|
literal { layoutVideo }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val showEndscreenCardsFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
|
returns("V")
|
||||||
|
parameters("L")
|
||||||
|
custom { method, classDef ->
|
||||||
|
classDef.methods.count() == 5
|
||||||
|
&& method.containsLiteralInstruction(0)
|
||||||
|
&& method.containsLiteralInstruction(5)
|
||||||
|
&& method.containsLiteralInstruction(8)
|
||||||
|
&& method.indexOfFirstInstruction {
|
||||||
|
val reference = getReference<FieldReference>()
|
||||||
|
reference?.type == "Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"
|
||||||
|
} >= 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package app.revanced.patches.youtube.layout.hide.endscreencards
|
package app.revanced.patches.youtube.layout.hide.endscreencards
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.patch.resourcePatch
|
import app.revanced.patcher.patch.resourcePatch
|
||||||
@@ -11,6 +12,8 @@ import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
|||||||
import app.revanced.patches.shared.misc.mapping.resourceMappings
|
import app.revanced.patches.shared.misc.mapping.resourceMappings
|
||||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.is_19_43_or_greater
|
||||||
|
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
@@ -22,7 +25,7 @@ internal var layoutIcon = -1L
|
|||||||
internal var layoutVideo = -1L
|
internal var layoutVideo = -1L
|
||||||
private set
|
private set
|
||||||
|
|
||||||
private val hideEndscreenCardsResourcePatch = resourcePatch {
|
private val hideEndScreenCardsResourcePatch = resourcePatch {
|
||||||
dependsOn(
|
dependsOn(
|
||||||
settingsPatch,
|
settingsPatch,
|
||||||
resourceMappingPatch,
|
resourceMappingPatch,
|
||||||
@@ -30,7 +33,7 @@ private val hideEndscreenCardsResourcePatch = resourcePatch {
|
|||||||
)
|
)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
addResources("youtube", "layout.hide.endscreencards.hideEndscreenCardsResourcePatch")
|
addResources("youtube", "layout.hide.endscreencards.hideEndScreenCardsResourcePatch")
|
||||||
|
|
||||||
PreferenceScreen.PLAYER.addPreferences(
|
PreferenceScreen.PLAYER.addPreferences(
|
||||||
SwitchPreference("revanced_hide_endscreen_cards"),
|
SwitchPreference("revanced_hide_endscreen_cards"),
|
||||||
@@ -45,16 +48,17 @@ private val hideEndscreenCardsResourcePatch = resourcePatch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
"Lapp/revanced/extension/youtube/patches/HideEndscreenCardsPatch;"
|
"Lapp/revanced/extension/youtube/patches/HideEndScreenCardsPatch;"
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val hideEndscreenCardsPatch = bytecodePatch(
|
val hideEndScreenCardsPatch = bytecodePatch(
|
||||||
name = "Hide end screen cards",
|
name = "Hide end screen cards",
|
||||||
description = "Adds an option to hide suggested video cards at the end of videos.",
|
description = "Adds an option to hide suggested video cards at the end of videos.",
|
||||||
) {
|
) {
|
||||||
dependsOn(
|
dependsOn(
|
||||||
sharedExtensionPatch,
|
sharedExtensionPatch,
|
||||||
hideEndscreenCardsResourcePatch,
|
hideEndScreenCardsResourcePatch,
|
||||||
|
versionCheckPatch
|
||||||
)
|
)
|
||||||
|
|
||||||
compatibleWith(
|
compatibleWith(
|
||||||
@@ -78,9 +82,24 @@ val hideEndscreenCardsPatch = bytecodePatch(
|
|||||||
|
|
||||||
addInstruction(
|
addInstruction(
|
||||||
insertIndex,
|
insertIndex,
|
||||||
"invoke-static { v$viewRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideEndscreen(Landroid/view/View;)V",
|
"invoke-static { v$viewRegister }, " +
|
||||||
|
"$EXTENSION_CLASS_DESCRIPTOR->hideEndScreenCardView(Landroid/view/View;)V",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_19_43_or_greater) {
|
||||||
|
showEndscreenCardsFingerprint.method.addInstructionsWithLabels(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->hideEndScreenCards()Z
|
||||||
|
move-result v0
|
||||||
|
if-eqz v0, :show
|
||||||
|
return-void
|
||||||
|
:show
|
||||||
|
nop
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -859,7 +859,7 @@ To show the Audio track menu, change \'Spoof video streams\' to iPadOS"</string>
|
|||||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">Previous & Next buttons are hidden</string>
|
<string name="revanced_hide_player_previous_next_buttons_summary_on">Previous & Next buttons are hidden</string>
|
||||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Previous & Next buttons are shown</string>
|
<string name="revanced_hide_player_previous_next_buttons_summary_off">Previous & Next buttons are shown</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
<patch id="layout.hide.endscreencards.hideEndScreenCardsResourcePatch">
|
||||||
<string name="revanced_hide_endscreen_cards_title">Hide end screen cards</string>
|
<string name="revanced_hide_endscreen_cards_title">Hide end screen cards</string>
|
||||||
<string name="revanced_hide_endscreen_cards_summary_on">End screen cards are hidden</string>
|
<string name="revanced_hide_endscreen_cards_summary_on">End screen cards are hidden</string>
|
||||||
<string name="revanced_hide_endscreen_cards_summary_off">End screen cards are shown</string>
|
<string name="revanced_hide_endscreen_cards_summary_off">End screen cards are shown</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user