diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java index a8bde8272..99cd0c2ec 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -319,6 +319,7 @@ public class Settings extends BaseSettings { public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_QUALITY_HEADER = new BooleanSetting("revanced_hide_player_flyout_menu_quality_header", FALSE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_QUALITY_FOOTER = new BooleanSetting("revanced_hide_player_flyout_menu_quality_footer", TRUE, true); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_REPORT = new BooleanSetting("revanced_hide_player_flyout_menu_report", TRUE); + public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_SLEEP_TIMER = new BooleanSetting("revanced_hide_player_flyout_menu_sleep_timer", FALSE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_ADDITIONAL_SETTINGS = new BooleanSetting("revanced_hide_player_flyout_menu_additional_settings", FALSE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_AMBIENT = new BooleanSetting("revanced_hide_player_flyout_menu_ambient_mode", FALSE); @@ -326,7 +327,6 @@ public class Settings extends BaseSettings { public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_LOOP = new BooleanSetting("revanced_hide_player_flyout_menu_loop_video", FALSE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_PIP = new BooleanSetting("revanced_hide_player_flyout_menu_pip", TRUE, true); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_PREMIUM_CONTROLS = new BooleanSetting("revanced_hide_player_flyout_menu_premium_controls", TRUE); - public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_SLEEP_TIMER = new BooleanSetting("revanced_hide_player_flyout_menu_sleep_timer", TRUE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_STABLE_VOLUME = new BooleanSetting("revanced_hide_player_flyout_menu_stable_volume", FALSE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_STATS_FOR_NERDS = new BooleanSetting("revanced_hide_player_flyout_menu_stats_for_nerds", FALSE); public static final BooleanSetting HIDE_PLAYER_FLYOUT_MENU_WATCH_IN_VR = new BooleanSetting("revanced_hide_player_flyout_menu_watch_in_vr", TRUE); diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/ExtendedUtils.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/ExtendedUtils.java index b92b4f09b..77f328b52 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/ExtendedUtils.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/ExtendedUtils.java @@ -70,7 +70,6 @@ public class ExtendedUtils extends PackageUtils { Settings.HIDE_PLAYER_FLYOUT_MENU_LOOP, Settings.HIDE_PLAYER_FLYOUT_MENU_PIP, Settings.HIDE_PLAYER_FLYOUT_MENU_PREMIUM_CONTROLS, - Settings.HIDE_PLAYER_FLYOUT_MENU_SLEEP_TIMER, Settings.HIDE_PLAYER_FLYOUT_MENU_STABLE_VOLUME, Settings.HIDE_PLAYER_FLYOUT_MENU_STATS_FOR_NERDS, Settings.HIDE_PLAYER_FLYOUT_MENU_WATCH_IN_VR, @@ -103,7 +102,6 @@ public class ExtendedUtils extends PackageUtils { Settings.HIDE_PLAYER_FLYOUT_MENU_LOOP, Settings.HIDE_PLAYER_FLYOUT_MENU_PIP, Settings.HIDE_PLAYER_FLYOUT_MENU_PREMIUM_CONTROLS, - Settings.HIDE_PLAYER_FLYOUT_MENU_SLEEP_TIMER, Settings.HIDE_PLAYER_FLYOUT_MENU_STABLE_VOLUME, Settings.HIDE_PLAYER_FLYOUT_MENU_STATS_FOR_NERDS, Settings.HIDE_PLAYER_FLYOUT_MENU_WATCH_IN_VR, diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/Fingerprints.kt index 254670acd..19470906e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/Fingerprints.kt @@ -61,6 +61,23 @@ internal val pipModeConfigFingerprint = legacyFingerprint( literals = listOf(45427407L), ) +internal const val SLEEP_TIMER_CONSTRUCTOR_FEATURE_FLAG = 45640654L + +internal val sleepTimerConstructorFingerprint = legacyFingerprint( + name = "sleepTimerConstructorFingerprint", + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, + literals = listOf(SLEEP_TIMER_CONSTRUCTOR_FEATURE_FLAG), +) + +internal const val SLEEP_TIMER_FEATURE_FLAG = 45630421L + +internal val sleepTimerFingerprint = legacyFingerprint( + name = "sleepTimerConstructorFingerprint", + returnType = "Z", + literals = listOf(SLEEP_TIMER_FEATURE_FLAG), +) + internal val videoQualityArrayFingerprint = legacyFingerprint( name = "videoQualityArrayFingerprint", returnType = "[Lcom/google/android/libraries/youtube/innertube/model/media/VideoQuality;", diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt index 03c96914c..b0d6a62f7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/player/flyoutmenu/hide/PlayerFlyoutMenuPatch.kt @@ -13,6 +13,7 @@ import app.revanced.patches.youtube.utils.extension.Constants.PLAYER_CLASS_DESCR import app.revanced.patches.youtube.utils.patch.PatchList.HIDE_PLAYER_FLYOUT_MENU import app.revanced.patches.youtube.utils.playertype.playerTypeHookPatch import app.revanced.patches.youtube.utils.playservice.is_18_39_or_greater +import app.revanced.patches.youtube.utils.playservice.is_19_30_or_greater import app.revanced.patches.youtube.utils.playservice.versionCheckPatch import app.revanced.patches.youtube.utils.qualityMenuViewInflateFingerprint import app.revanced.patches.youtube.utils.resourceid.bottomSheetFooterText @@ -125,6 +126,25 @@ val playerFlyoutMenuPatch = bytecodePatch( // endregion + // region patch for hide sleep timer menu + + if (is_19_30_or_greater) { + // Sleep timer menu in Additional settings (deprecated) + // TODO: A patch will be implemented to assign this deprecated menu to another action. + // mapOf( + // sleepTimerConstructorFingerprint to SLEEP_TIMER_CONSTRUCTOR_FEATURE_FLAG, + // sleepTimerFingerprint to SLEEP_TIMER_FEATURE_FLAG + // ).forEach { (fingerprint, literal) -> + // fingerprint.injectLiteralInstructionBooleanCall( + // literal, + // "$PLAYER_CLASS_DESCRIPTOR->hideDeprecatedSleepTimerMenu(Z)Z" + // ) + // } + settingArray += "SETTINGS: HIDE_SLEEP_TIMER_MENU" + } + + // endregion + addLithoFilter(PANELS_FILTER_CLASS_DESCRIPTOR) // region add settings diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playservice/VersionCheckPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playservice/VersionCheckPatch.kt index 5dc7c5d7a..6e42b8a41 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playservice/VersionCheckPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/playservice/VersionCheckPatch.kt @@ -29,6 +29,8 @@ var is_19_28_or_greater = false private set var is_19_29_or_greater = false private set +var is_19_30_or_greater = false + private set var is_19_32_or_greater = false private set var is_19_34_or_greater = false @@ -68,6 +70,7 @@ val versionCheckPatch = resourcePatch( is_19_26_or_greater = 242705000 <= playStoreServicesVersion is_19_28_or_greater = 242905000 <= playStoreServicesVersion is_19_29_or_greater = 243005000 <= playStoreServicesVersion + is_19_30_or_greater = 243105000 <= playStoreServicesVersion is_19_32_or_greater = 243305000 <= playStoreServicesVersion is_19_34_or_greater = 243499000 <= playStoreServicesVersion is_19_36_or_greater = 243705000 <= playStoreServicesVersion diff --git a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 33ce4dbb9..bbec93d49 100644 --- a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -373,6 +373,9 @@ SETTINGS: HIDE_PLAYER_FLYOUT_MENU --> + +