diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/Fingerprints.kt index 1447cc97c..e0a892c49 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/Fingerprints.kt @@ -3,6 +3,7 @@ package app.revanced.patches.youtube.swipe.controls import app.revanced.patches.youtube.utils.extension.Constants.EXTENSION_PATH import app.revanced.patches.youtube.utils.resourceid.autoNavScrollCancelPadding import app.revanced.patches.youtube.utils.resourceid.fullScreenEngagementOverlay +import app.revanced.util.containsLiteralInstruction import app.revanced.util.fingerprint.legacyFingerprint import app.revanced.util.or import com.android.tools.smali.dexlib2.AccessFlags @@ -39,7 +40,7 @@ internal val swipeToSwitchVideoFingerprint = legacyFingerprint( literals = listOf(SWIPE_TO_SWITCH_VIDEO_FEATURE_FLAG), ) -internal const val WATCH_PANEL_GESTURES_FEATURE_FLAG = 45372793L +internal const val WATCH_PANEL_GESTURES_PRIMARY_FEATURE_FLAG = 45372793L /** * This fingerprint is compatible with YouTube v18.29.38 ~ v19.34.42 @@ -47,10 +48,28 @@ internal const val WATCH_PANEL_GESTURES_FEATURE_FLAG = 45372793L internal val watchPanelGesturesFingerprint = legacyFingerprint( name = "watchPanelGesturesFingerprint", returnType = "V", - literals = listOf(WATCH_PANEL_GESTURES_FEATURE_FLAG), + literals = listOf(WATCH_PANEL_GESTURES_PRIMARY_FEATURE_FLAG), ) internal val watchPanelGesturesAlternativeFingerprint = legacyFingerprint( name = "watchPanelGesturesAlternativeFingerprint", literals = listOf(autoNavScrollCancelPadding), -) \ No newline at end of file +) + +internal const val WATCH_PANEL_GESTURES_SECONDARY_FEATURE_FLAG = 45619395L + +/** + * Watch panel gestures in channel bar + * This fingerprint is compatible with YouTube v19.15.36 ~ + */ +internal val watchPanelGesturesChannelBarFingerprint = legacyFingerprint( + name = "watchPanelGesturesChannelBarFingerprint", + returnType = "Z", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("Landroid/view/MotionEvent;"), + customFingerprint = { method, _ -> + method.definingClass.endsWith("/NextGenWatchLayout;") && + method.name == "onInterceptTouchEvent" && + method.containsLiteralInstruction(WATCH_PANEL_GESTURES_SECONDARY_FEATURE_FLAG) + } +) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt index 3d404f4b7..5e459e855 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt @@ -16,6 +16,7 @@ import app.revanced.patches.youtube.utils.mainactivity.mainActivityResolvePatch import app.revanced.patches.youtube.utils.patch.PatchList.SWIPE_CONTROLS import app.revanced.patches.youtube.utils.playertype.playerTypeHookPatch import app.revanced.patches.youtube.utils.playservice.is_19_09_or_greater +import app.revanced.patches.youtube.utils.playservice.is_19_15_or_greater import app.revanced.patches.youtube.utils.playservice.is_19_23_or_greater import app.revanced.patches.youtube.utils.playservice.is_19_36_or_greater import app.revanced.patches.youtube.utils.playservice.versionCheckPatch @@ -146,7 +147,7 @@ val swipeControlsPatch = bytecodePatch( if (!is_19_36_or_greater) { watchPanelGesturesFingerprint.injectLiteralInstructionBooleanCall( - WATCH_PANEL_GESTURES_FEATURE_FLAG, + WATCH_PANEL_GESTURES_PRIMARY_FEATURE_FLAG, "$EXTENSION_SWIPE_CONTROLS_PATCH_CLASS_DESCRIPTOR->disableWatchPanelGestures()Z" ) } else { @@ -197,6 +198,13 @@ val swipeControlsPatch = bytecodePatch( } } + if (is_19_15_or_greater) { + watchPanelGesturesChannelBarFingerprint.injectLiteralInstructionBooleanCall( + WATCH_PANEL_GESTURES_SECONDARY_FEATURE_FLAG, + "$EXTENSION_SWIPE_CONTROLS_PATCH_CLASS_DESCRIPTOR->disableWatchPanelGestures()Z" + ) + } + // endregion // region copy resources