diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaylistPatch.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaylistPatch.java index d33a55441..b02d81cd0 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaylistPatch.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaylistPatch.java @@ -8,6 +8,8 @@ import android.widget.ScrollView; import androidx.annotation.GuardedBy; import androidx.annotation.NonNull; +import com.google.android.libraries.youtube.rendering.ui.pivotbar.PivotBar; + import org.apache.commons.collections4.BidiMap; import org.apache.commons.collections4.bidimap.DualHashBidiMap; import org.apache.commons.lang3.BooleanUtils; @@ -125,6 +127,15 @@ public class PlaylistPatch extends VideoUtils { } } + /** + * Injection point. + */ + public static void setPivotBar(PivotBar view) { + if (QUEUE_MANAGER) { + mContext = view.getContext(); + } + } + /** * Injection point. */ diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/Fingerprints.kt index 109484f0e..10c9e073d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/Fingerprints.kt @@ -52,3 +52,20 @@ internal fun indexOfSetVideoIdInstruction(method: Method) = opcode == Opcode.IPUT_OBJECT && getReference()?.type == "Ljava/lang/String;" } + +internal val setPivotBarVisibilityFingerprint = legacyFingerprint( + name = "setPivotBarVisibilityFingerprint", + accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, + returnType = "V", + parameters = listOf("Z"), + opcodes = listOf( + Opcode.CHECK_CAST, + Opcode.IF_EQZ, + ), +) + +internal val setPivotBarVisibilityParentFingerprint = legacyFingerprint( + name = "setPivotBarVisibilityFingerprint", + parameters = listOf("Z"), + strings = listOf("FEnotifications_inbox"), +) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/PlaylistPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/PlaylistPatch.kt index ce2bcccf7..60c2f821d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/PlaylistPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playlist/PlaylistPatch.kt @@ -1,5 +1,6 @@ package app.revanced.patches.youtube.utils.playlist +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels import app.revanced.patcher.extensions.InstructionExtensions.getInstruction @@ -81,5 +82,19 @@ val playlistPatch = bytecodePatch( ) } } + + setPivotBarVisibilityFingerprint + .matchOrThrow(setPivotBarVisibilityParentFingerprint) + .let { + it.method.apply { + val viewIndex = it.patternMatch!!.startIndex + val viewRegister = getInstruction(viewIndex).registerA + addInstruction( + viewIndex + 1, + "invoke-static {v$viewRegister}," + + " $EXTENSION_CLASS_DESCRIPTOR->setPivotBar(Lcom/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar;)V", + ) + } + } } }