fix(YouTube - Visual preferences icons): Icon is not shown properly when patch option is set to Custom branding icon

This commit is contained in:
inotia00 2025-01-22 13:25:50 +09:00
parent a9f7384929
commit 7484173618

View File

@ -98,19 +98,25 @@ val cairoFragmentPatch = bytecodePatch(
settingsFragmentSyntheticFingerprint.methodOrThrow().apply { settingsFragmentSyntheticFingerprint.methodOrThrow().apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(settingsFragmentCairo) val literalIndex = indexOfFirstLiteralInstructionOrThrow(settingsFragmentCairo)
val fragmentStyleIndex = indexOfFirstInstructionOrThrow(literalIndex) { val fragmentStylePrimaryIndex = indexOfFirstInstructionOrThrow(literalIndex) {
val reference = getReference<MethodReference>() val reference = getReference<MethodReference>()
opcode == Opcode.INVOKE_VIRTUAL_RANGE && opcode == Opcode.INVOKE_VIRTUAL_RANGE &&
reference?.returnType == "V" && reference?.returnType == "V" &&
reference.parameterTypes.firstOrNull() == "Ljava/lang/String;" reference.parameterTypes.firstOrNull() == "Ljava/lang/String;"
} }
val fragmentStyleMethod = getWalkerMethod(fragmentStyleIndex) val fragmentStyleSecondaryIndex = indexOfFirstInstructionOrThrow(literalIndex) {
val reference = getReference<MethodReference>()
opcode == Opcode.INVOKE_VIRTUAL &&
reference?.returnType == "V" &&
reference.parameterTypes == listOf("Ljava/util/List;", "Landroidx/preference/Preference;")
}
arrayOf( arrayOf(
// Load cairo fragment xml. // Load cairo fragment xml.
this, this,
// Set style to cairo preference. // Set style to cairo preference.
fragmentStyleMethod getWalkerMethod(fragmentStylePrimaryIndex),
getWalkerMethod(fragmentStyleSecondaryIndex)
).forEach { method -> ).forEach { method ->
method.disableCairoFragmentConfig() method.disableCairoFragmentConfig()
} }