From a7b6757701aa5ad7599902e5e8b36ba2bccc9a3c Mon Sep 17 00:00:00 2001
From: inotia00 <108592928+inotia00@users.noreply.github.com>
Date: Sun, 14 Jul 2024 14:26:04 +0900
Subject: [PATCH] feat(YouTube/Shorts components): add `Hide paused header`
setting https://github.com/inotia00/ReVanced_Extended/issues/2213
---
.../shorts/components/ShortsComponentPatch.kt | 23 +++++++++++++++++++
...nt.kt => ShortsPausedHeaderFingerprint.kt} | 2 +-
.../youtube/settings/host/values/strings.xml | 3 +++
.../youtube/settings/xml/revanced_prefs.xml | 1 +
4 files changed, 28 insertions(+), 1 deletion(-)
rename src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/{ToolBarBannerFingerprint.kt => ShortsPausedHeaderFingerprint.kt} (86%)
diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt
index 93928be15..7645098b7 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt
@@ -13,6 +13,7 @@ import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.shared.litho.LithoFilterPatch
import app.revanced.patches.youtube.shorts.components.fingerprints.ShortsButtonFingerprint
import app.revanced.patches.youtube.shorts.components.fingerprints.ShortsPaidPromotionFingerprint
+import app.revanced.patches.youtube.shorts.components.fingerprints.ShortsPausedHeaderFingerprint
import app.revanced.patches.youtube.shorts.components.fingerprints.ShortsPivotLegacyFingerprint
import app.revanced.patches.youtube.shorts.components.fingerprints.ShortsSubscriptionsTabletFingerprint
import app.revanced.patches.youtube.shorts.components.fingerprints.ShortsSubscriptionsTabletParentFingerprint
@@ -37,6 +38,7 @@ import app.revanced.util.REGISTER_TEMPLATE_REPLACEMENT
import app.revanced.util.getTargetIndexOrThrow
import app.revanced.util.getTargetIndexReversedOrThrow
import app.revanced.util.getTargetIndexWithReferenceOrThrow
+import app.revanced.util.getWalkerMethod
import app.revanced.util.getWideLiteralInstructionIndex
import app.revanced.util.literalInstructionHook
import app.revanced.util.patch.BaseBytecodePatch
@@ -68,6 +70,7 @@ object ShortsComponentPatch : BaseBytecodePatch(
fingerprints = setOf(
ShortsButtonFingerprint,
ShortsPaidPromotionFingerprint,
+ ShortsPausedHeaderFingerprint,
ShortsPivotLegacyFingerprint,
ShortsSubscriptionsTabletParentFingerprint,
TextComponentSpecFingerprint
@@ -273,6 +276,26 @@ object ShortsComponentPatch : BaseBytecodePatch(
// endregion
+ // region patch for hide paused header
+
+ ShortsPausedHeaderFingerprint.resultOrThrow().let {
+ val targetMethod = it.getWalkerMethod(context, it.scanResult.patternScanResult!!.endIndex)
+
+ targetMethod.apply {
+ addInstructionsWithLabels(
+ 0,
+ """
+ invoke-static {}, $SHORTS_CLASS_DESCRIPTOR->hideShortsPausedHeader()Z
+ move-result v0
+ if-nez v0, :hide
+ """,
+ ExternalLabel("hide", getInstruction(implementation!!.instructions.lastIndex))
+ )
+ }
+ }
+
+ // endregion
+
// region patch for return shorts channel name
TextComponentSpecFingerprint.resultOrThrow().let {
diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ToolBarBannerFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ShortsPausedHeaderFingerprint.kt
similarity index 86%
rename from src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ToolBarBannerFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ShortsPausedHeaderFingerprint.kt
index e5020ca96..b94276a10 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ToolBarBannerFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ShortsPausedHeaderFingerprint.kt
@@ -3,7 +3,7 @@ package app.revanced.patches.youtube.shorts.components.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.Opcode
-internal object ToolBarBannerFingerprint : MethodFingerprint(
+internal object ShortsPausedHeaderFingerprint : MethodFingerprint(
returnType = "Landroid/view/View;",
opcodes = listOf(
Opcode.IF_NEZ,
diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml
index 492b2e6ad..dabd99ea6 100644
--- a/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/src/main/resources/youtube/settings/host/values/strings.xml
@@ -1037,6 +1037,9 @@ Side effect: Official headers in search results will be hidden."
Hide Subscribe button
Subscribe button is hidden.
Subscribe button is shown.
+ Hide paused header
+ Paused header is hidden.
+ Paused header is shown.
Hide paused overlay buttons
Paused overlay buttons are hidden.
Paused overlay buttons are shown.
diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
index eb5d929be..263135684 100644
--- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -461,6 +461,7 @@
+