diff --git a/src/main/kotlin/crimera/patches/twitter/featureFlag/FeatureFlagPatch.kt b/src/main/kotlin/crimera/patches/twitter/featureFlag/FeatureFlagPatch.kt index 0b12d018..e015fe85 100644 --- a/src/main/kotlin/crimera/patches/twitter/featureFlag/FeatureFlagPatch.kt +++ b/src/main/kotlin/crimera/patches/twitter/featureFlag/FeatureFlagPatch.kt @@ -10,9 +10,7 @@ import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.shared.misc.integrations.fingerprint.IntegrationsUtilsFingerprint import com.android.tools.smali.dexlib2.Opcode -import crimera.patches.twitter.featureFlag.fingerprints.CustomAdapterFingerprint -import crimera.patches.twitter.featureFlag.fingerprints.FeatureFlagFingerprint -import crimera.patches.twitter.featureFlag.fingerprints.RecyclerViewGetCountFingerprint +import crimera.patches.twitter.featureFlag.fingerprints.* import crimera.patches.twitter.misc.settings.SettingsPatch import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint @@ -29,7 +27,9 @@ object FeatureFlagPatch : BytecodePatch( IntegrationsUtilsFingerprint, SettingsStatusLoadFingerprint, CustomAdapterFingerprint, - RecyclerViewGetCountFingerprint + GetCountFingerprint, + OnCreateViewHolderFingerprint, + OnBindViewHolderFingerprint ) ) { override fun execute(context: BytecodeContext) { @@ -54,10 +54,18 @@ object FeatureFlagPatch : BytecodePatch( ) // Change the getCount override method name - val getCountMethod = CustomAdapterFingerprint.result?.mutableMethod + val customAdapter = CustomAdapterFingerprint.result ?: throw PatchException("getCount Method of CustomAdapter not found") - getCountMethod.name = RecyclerViewGetCountFingerprint.result?.method?.name + customAdapter.mutableMethod.name = GetCountFingerprint.result?.method?.name ?: throw PatchException("getCount Method of RecyclerView not found") + + // onCreateViewHolder + customAdapter.mutableClass.methods.first { it.name == "onCreateViewHolder" }.name = OnCreateViewHolderFingerprint.result?.method?.name + ?: throw PatchException("onCreateViewHolder Method of RecyclerView not found") + + // onBindViewHolder + customAdapter.mutableClass.methods.first { it.name == "onBindViewHolder" }.name = OnBindViewHolderFingerprint.result?.method?.name + ?: throw PatchException("onBindViewHolder Method of RecyclerView not found") } } \ No newline at end of file diff --git a/src/main/kotlin/crimera/patches/twitter/featureFlag/fingerprints/RecyclerViewFingerprints.kt b/src/main/kotlin/crimera/patches/twitter/featureFlag/fingerprints/RecyclerViewFingerprints.kt new file mode 100644 index 00000000..6341f39b --- /dev/null +++ b/src/main/kotlin/crimera/patches/twitter/featureFlag/fingerprints/RecyclerViewFingerprints.kt @@ -0,0 +1,29 @@ +package crimera.patches.twitter.featureFlag.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +object GetCountFingerprint: MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.ABSTRACT, + returnType = "I", + customFingerprint = { methodDef, _ -> + methodDef.definingClass.endsWith("Landroidx/recyclerview/widget/RecyclerView\$e;") + } +) + +object OnCreateViewHolderFingerprint: MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.ABSTRACT, + returnType = "Landroidx/recyclerview/widget/RecyclerView\$c0;", + customFingerprint = { methodDef, _ -> + methodDef.definingClass.endsWith("Landroidx/recyclerview/widget/RecyclerView\$e;") + } +) + +object OnBindViewHolderFingerprint: MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.ABSTRACT, + returnType = "V", + customFingerprint = { methodDef, _ -> + methodDef.definingClass.endsWith("Landroidx/recyclerview/widget/RecyclerView\$e;") + } +) \ No newline at end of file diff --git a/src/main/kotlin/crimera/patches/twitter/featureFlag/fingerprints/RecyclerViewGetCountFingerprint.kt b/src/main/kotlin/crimera/patches/twitter/featureFlag/fingerprints/RecyclerViewGetCountFingerprint.kt deleted file mode 100644 index baa82f6d..00000000 --- a/src/main/kotlin/crimera/patches/twitter/featureFlag/fingerprints/RecyclerViewGetCountFingerprint.kt +++ /dev/null @@ -1,13 +0,0 @@ -package crimera.patches.twitter.featureFlag.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -object RecyclerViewGetCountFingerprint: MethodFingerprint( - accessFlags = AccessFlags.PUBLIC or AccessFlags.ABSTRACT, - returnType = "I", - customFingerprint = { methodDef, _ -> - methodDef.definingClass.endsWith("Landroidx/recyclerview/widget/RecyclerView\$e;") - } -) \ No newline at end of file