fix(YouTube/Hide player flyout menu): Sleep timer menu always hidden in YouTube 19.34.42

This commit is contained in:
inotia00 2024-12-15 14:21:40 +09:00
parent 9a962e441e
commit 969e845a87
6 changed files with 44 additions and 3 deletions

View File

@ -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);

View File

@ -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,

View File

@ -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;",

View File

@ -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

View File

@ -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

View File

@ -373,6 +373,9 @@
<SwitchPreference android:title="@string/revanced_hide_player_flyout_menu_quality_footer_title" android:key="revanced_hide_player_flyout_menu_quality_footer" android:summaryOn="@string/revanced_hide_player_flyout_menu_quality_footer_summary_on" android:summaryOff="@string/revanced_hide_player_flyout_menu_quality_footer_summary_off" />
<SwitchPreference android:title="@string/revanced_hide_player_flyout_menu_report_title" android:key="revanced_hide_player_flyout_menu_report" android:summaryOn="@string/revanced_hide_player_flyout_menu_report_summary_on" android:summaryOff="@string/revanced_hide_player_flyout_menu_report_summary_off" />SETTINGS: HIDE_PLAYER_FLYOUT_MENU -->
<!-- SETTINGS: HIDE_SLEEP_TIMER_MENU
<SwitchPreference android:title="@string/revanced_hide_player_flyout_menu_sleep_timer_title" android:key="revanced_hide_player_flyout_menu_sleep_timer" android:summaryOn="@string/revanced_hide_player_flyout_menu_sleep_timer_summary_on" android:summaryOff="@string/revanced_hide_player_flyout_menu_sleep_timer_summary_off" />SETTINGS: HIDE_SLEEP_TIMER_MENU -->
<!-- SETTINGS: HIDE_PLAYER_FLYOUT_MENU
<PreferenceCategory android:title="@string/revanced_preference_category_additional_settings" android:layout="@layout/revanced_settings_preferences_category">
<SwitchPreference android:title="@string/revanced_hide_player_flyout_menu_ambient_mode_title" android:key="revanced_hide_player_flyout_menu_ambient_mode" android:summaryOn="@string/revanced_hide_player_flyout_menu_ambient_mode_summary_on" android:summaryOff="@string/revanced_hide_player_flyout_menu_ambient_mode_summary_off" />