diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/general/GeneralPatch.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/general/GeneralPatch.java index f1dd20b99..9ce634720 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/general/GeneralPatch.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/general/GeneralPatch.java @@ -128,6 +128,15 @@ public class GeneralPatch { // region [Hide layout components] patch + public static boolean disableTranslucentStatusBar(boolean original) { + try { + return !Settings.DISABLE_TRANSLUCENT_STATUS_BAR.get() && original; + } catch (Exception ex) { + Logger.printException(() -> "Failed to load disableTranslucentStatusBar", ex); + } + return original; + } + private static String[] accountMenuBlockList; static { 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 6a4c79418..043af0fee 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 @@ -148,6 +148,7 @@ public class Settings extends BaseSettings { new ChangeStartPagePatch.ChangeStartPageTypeAvailability()); public static final BooleanSetting DISABLE_AUTO_AUDIO_TRACKS = new BooleanSetting("revanced_disable_auto_audio_tracks", FALSE); public static final BooleanSetting DISABLE_SPLASH_ANIMATION = new BooleanSetting("revanced_disable_splash_animation", FALSE, true); + public static final BooleanSetting DISABLE_TRANSLUCENT_STATUS_BAR = new BooleanSetting("revanced_disable_translucent_status_bar", TRUE, true); public static final BooleanSetting ENABLE_GRADIENT_LOADING_SCREEN = new BooleanSetting("revanced_enable_gradient_loading_screen", FALSE, true); public static final BooleanSetting HIDE_FLOATING_MICROPHONE = new BooleanSetting("revanced_hide_floating_microphone", TRUE, true); public static final BooleanSetting HIDE_GRAY_SEPARATOR = new BooleanSetting("revanced_hide_gray_separator", TRUE); diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/Fingerprints.kt index e37d96d1d..0acbf1fa6 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/Fingerprints.kt @@ -134,3 +134,12 @@ internal val tooltipContentViewFingerprint = legacyFingerprint( literals = listOf(toolTipContentView), ) +internal const val TRANSLUCENT_STATUS_BAR_FEATURE_FLAG = 45400535L + +internal val translucentStatusBarFeatureFlagFingerprint = legacyFingerprint( + name = "translucentStatusBarFeatureFlagFingerprint", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + returnType = "Z", + literals = listOf(TRANSLUCENT_STATUS_BAR_FEATURE_FLAG) +) + diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt index a80c7b44b..05b29167a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt @@ -17,10 +17,13 @@ import app.revanced.patches.youtube.utils.extension.Constants.COMPONENTS_PATH import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_CLASS_DESCRIPTOR import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_PATH import app.revanced.patches.youtube.utils.patch.PatchList.HIDE_LAYOUT_COMPONENTS +import app.revanced.patches.youtube.utils.playservice.is_19_25_or_greater +import app.revanced.patches.youtube.utils.playservice.versionCheckPatch import app.revanced.patches.youtube.utils.resourceid.accountSwitcherAccessibility import app.revanced.patches.youtube.utils.resourceid.sharedResourceIdPatch import app.revanced.patches.youtube.utils.settings.ResourceUtils.addPreference import app.revanced.patches.youtube.utils.settings.settingsPatch +import app.revanced.util.fingerprint.injectLiteralInstructionBooleanCall import app.revanced.util.fingerprint.matchOrThrow import app.revanced.util.fingerprint.methodOrThrow import app.revanced.util.fingerprint.mutableClassOrThrow @@ -55,10 +58,16 @@ val layoutComponentsPatch = bytecodePatch( sharedResourceIdPatch, settingsMenuPatch, viewGroupMarginLayoutParamsHookPatch, + versionCheckPatch, ) execute { + var settingArray = arrayOf( + "PREFERENCE_SCREEN: GENERAL", + "SETTINGS: HIDE_LAYOUT_COMPONENTS" + ) + // region patch for disable pip notification pipNotificationFingerprint.matchOrThrow().let { @@ -86,6 +95,19 @@ val layoutComponentsPatch = bytecodePatch( // endregion + // region patch for disable translucent status bar + + if (is_19_25_or_greater) { + translucentStatusBarFeatureFlagFingerprint.injectLiteralInstructionBooleanCall( + TRANSLUCENT_STATUS_BAR_FEATURE_FLAG, + "$GENERAL_CLASS_DESCRIPTOR->disableTranslucentStatusBar(Z)Z" + ) + + settingArray += "SETTINGS: DISABLE_TRANSLUCENT_STATUS_BAR" + } + + // endregion + // region patch for disable update screen appBlockingCheckResultToStringFingerprint.mutableClassOrThrow().methods.first { method -> @@ -234,10 +256,7 @@ val layoutComponentsPatch = bytecodePatch( // region add settings addPreference( - arrayOf( - "PREFERENCE_SCREEN: GENERAL", - "SETTINGS: HIDE_LAYOUT_COMPONENTS" - ), + settingArray, HIDE_LAYOUT_COMPONENTS ) diff --git a/patches/src/main/resources/youtube/settings/host/values/strings.xml b/patches/src/main/resources/youtube/settings/host/values/strings.xml index b26b9bafb..d60cd55a4 100644 --- a/patches/src/main/resources/youtube/settings/host/values/strings.xml +++ b/patches/src/main/resources/youtube/settings/host/values/strings.xml @@ -352,6 +352,9 @@ Limitation: Back button on the toolbar may not work." Disable splash animation Splash animation is disabled. Splash animation is enabled. + Disable translucent status bar + Status bar is opaque. + Status bar is opaque or translucent. Enable gradient loading screen Gradient loading screen is enabled. Gradient loading screen is disabled. 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 22284a761..f3124f384 100644 --- a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -281,6 +281,9 @@ + +