add 20.31+ bold icons setting

This commit is contained in:
LisoUseInAIKyrios 2025-10-20 10:35:49 +04:00
parent b5cda51048
commit 1356a7e5b2
5 changed files with 44 additions and 3 deletions

View file

@ -65,4 +65,14 @@ internal val translucentNavigationButtonsSystemFeatureFlagFingerprint by fingerp
instructions(
literal(45632194L) // Translucent system buttons feature flag.
)
}
}
// Flag is present in 20.23, but icons are missing and forcing bold icons crashes the app.
internal val boldIconsFeatureFlagFingerprint by fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Z")
parameters()
instructions(
literal(45685201L)
)
}

View file

@ -14,6 +14,7 @@ import app.revanced.patches.youtube.misc.navigation.hookNavigationButtonCreated
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
import app.revanced.patches.youtube.misc.playservice.is_20_15_or_greater
import app.revanced.patches.youtube.misc.playservice.is_20_31_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
@ -72,6 +73,12 @@ val navigationButtonsPatch = bytecodePatch(
)
}
if (is_20_31_or_greater) {
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
SwitchPreference("revanced_navigation_bar_disable_bold_icons")
)
}
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
PreferenceScreenPreference(
key = "revanced_navigation_buttons_screen",
@ -146,5 +153,16 @@ val navigationButtonsPatch = bytecodePatch(
)
}
}
// Bold icon resources are found starting in 20.23, but many YT icons are not bold.
// 20.31 is the first version that seems to have all the bold icons.
if (is_20_31_or_greater) {
boldIconsFeatureFlagFingerprint.let {
it.method.insertLiteralOverride(
it.instructionMatches.first().index,
"$EXTENSION_CLASS_DESCRIPTOR->useBoldIcons(Z)Z"
)
}
}
}
}

View file

@ -792,6 +792,9 @@ If changing this setting does not take effect, try switching to Incognito mode."
<string name="revanced_navigation_bar_animations_title">Enable navigation bar animations</string>
<string name="revanced_navigation_bar_animations_summary_on">Navigation transitions are animated</string>
<string name="revanced_navigation_bar_animations_summary_off">Navigation transitions are not animated</string>
<string name="revanced_navigation_bar_disable_bold_icons_title">Disable bold icons</string>
<string name="revanced_navigation_bar_disable_bold_icons_summary_on">Icons are not bold</string>
<string name="revanced_navigation_bar_disable_bold_icons_summary_off">Icons are bold</string>
<string name="revanced_disable_translucent_status_bar_title">Disable translucent status bar</string>
<string name="revanced_disable_translucent_status_bar_summary_on">Status bar is opaque</string>
<string name="revanced_disable_translucent_status_bar_summary_off">Status bar is opaque or translucent</string>