From 469f2aa912330cfcfb6c676ca2d9262c5d8e1dc1 Mon Sep 17 00:00:00 2001 From: drobotk Date: Tue, 17 Mar 2026 12:58:17 +0100 Subject: [PATCH 1/6] feat(Messenger): Add `Restore old emoji drawer` patch --- patches/api/patches.api | 6 +++- .../patches/messenger/layout/Fingerprints.kt | 18 ++++++++---- .../layout/RestoreOldEmojiDrawerPatch.kt | 28 +++++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index be251e84a5..93ba04f66f 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -421,6 +421,10 @@ public final class app/revanced/patches/messenger/layout/HideFacebookButtonPatch public static final fun getHideFacebookButtonPatch ()Lapp/revanced/patcher/patch/Patch; } +public final class app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatchKt { + public static final fun getRestoreOldEmojiDrawerPatch ()Lapp/revanced/patcher/patch/Patch; +} + public final class app/revanced/patches/messenger/metaai/RemoveMetaAIPatchKt { public static final fun getRemoveMetaAIPatch ()Lapp/revanced/patcher/patch/Patch; } @@ -632,7 +636,7 @@ public final class app/revanced/patches/photomath/misc/unlock/plus/UnlockPlusPat } public final class app/revanced/patches/photoshopmix/BypassLoginPatchKt { - public static final fun getBypassLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch; + public static final fun getBypassLoginPatch ()Lapp/revanced/patcher/patch/Patch; } public final class app/revanced/patches/piccomafr/misc/SpoofAndroidDeviceIdPatchKt { diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt index d0cce5ef00..28d2ee9745 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt @@ -1,14 +1,22 @@ package app.revanced.patches.messenger.layout -import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.parameterTypes +import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext -import app.revanced.patcher.returnType -import app.revanced.patcher.instructions -import app.revanced.patcher.invoke +import com.android.tools.smali.dexlib2.Opcode internal val BytecodePatchContext.isFacebookButtonEnabledMethod by gettingFirstMethodDeclaratively { parameterTypes() returnType("Z") instructions("FacebookButtonTabButtonImplementation"(String::contains)) } + +internal val BytecodePatchContext.renderRedesignedDrawerMethodMatch by composingFirstMethod("Cannot render redesigned drawer with search icon ") { + instructions( + allOf( + Opcode.INVOKE_VIRTUAL(), + method { + returnType == "Z" && parameterTypes.isEmpty() + } + ) + ) +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt new file mode 100644 index 0000000000..04314183b6 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt @@ -0,0 +1,28 @@ +package app.revanced.patches.messenger.layout + +import app.revanced.patcher.extensions.getInstruction +import app.revanced.patcher.firstMethod +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.getReference +import app.revanced.util.returnEarly +import com.android.tools.smali.dexlib2.iface.reference.MethodReference +import com.android.tools.smali.dexlib2.util.MethodUtil + +@Suppress("unused") +val restoreOldEmojiDrawerPatch = bytecodePatch( + name = "Restore old emoji drawer", + description = "Disables the new redesigned emoji drawer.", +) { + compatibleWith("com.facebook.orca") + + apply { + val isRedesignedDrawerEnabledMethodReference = renderRedesignedDrawerMethodMatch.let { + it.method.getInstruction(it[0]).getReference()!! + } + val isRedesignedDrawerEnabledMethod = firstMethod { + definingClass == isRedesignedDrawerEnabledMethodReference.definingClass + && MethodUtil.methodSignaturesMatch(this, isRedesignedDrawerEnabledMethodReference) + } + isRedesignedDrawerEnabledMethod.returnEarly(false) + } +} \ No newline at end of file From b3e58d9ba3439882289ee46e613bcf1c059b6059 Mon Sep 17 00:00:00 2001 From: Dawid Krajcarz <80264606+drobotk@users.noreply.github.com> Date: Wed, 18 Mar 2026 22:55:00 +0100 Subject: [PATCH 2/6] Update patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt Co-authored-by: oSumAtrIX --- .../app/revanced/patches/messenger/layout/Fingerprints.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt index 28d2ee9745..c0623206ec 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt @@ -14,9 +14,7 @@ internal val BytecodePatchContext.renderRedesignedDrawerMethodMatch by composing instructions( allOf( Opcode.INVOKE_VIRTUAL(), - method { - returnType == "Z" && parameterTypes.isEmpty() - } + method { returnType == "Z" && parameterTypes.isEmpty() } ) ) } \ No newline at end of file From 541fbeeae880a03714fd5dde35ded535863497b3 Mon Sep 17 00:00:00 2001 From: drobotk Date: Wed, 18 Mar 2026 23:10:36 +0100 Subject: [PATCH 3/6] refactor: use firstMethod(ref) --- .../messenger/layout/RestoreOldEmojiDrawerPatch.kt | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt index 04314183b6..72e2df46c4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt @@ -1,12 +1,10 @@ package app.revanced.patches.messenger.layout import app.revanced.patcher.extensions.getInstruction +import app.revanced.patcher.extensions.methodReference import app.revanced.patcher.firstMethod import app.revanced.patcher.patch.bytecodePatch -import app.revanced.util.getReference import app.revanced.util.returnEarly -import com.android.tools.smali.dexlib2.iface.reference.MethodReference -import com.android.tools.smali.dexlib2.util.MethodUtil @Suppress("unused") val restoreOldEmojiDrawerPatch = bytecodePatch( @@ -17,12 +15,9 @@ val restoreOldEmojiDrawerPatch = bytecodePatch( apply { val isRedesignedDrawerEnabledMethodReference = renderRedesignedDrawerMethodMatch.let { - it.method.getInstruction(it[0]).getReference()!! - } - val isRedesignedDrawerEnabledMethod = firstMethod { - definingClass == isRedesignedDrawerEnabledMethodReference.definingClass - && MethodUtil.methodSignaturesMatch(this, isRedesignedDrawerEnabledMethodReference) + it.method.getInstruction(it[0]).methodReference!! } + val isRedesignedDrawerEnabledMethod = firstMethod(isRedesignedDrawerEnabledMethodReference) isRedesignedDrawerEnabledMethod.returnEarly(false) } } \ No newline at end of file From 02b459200eb5dda05d32970d27e2c44a72a13eee Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 20 Mar 2026 20:10:41 +0100 Subject: [PATCH 4/6] Apply suggestion from @oSumAtrIX --- .../patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt index 72e2df46c4..232948b0ec 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt @@ -14,10 +14,9 @@ val restoreOldEmojiDrawerPatch = bytecodePatch( compatibleWith("com.facebook.orca") apply { - val isRedesignedDrawerEnabledMethodReference = renderRedesignedDrawerMethodMatch.let { - it.method.getInstruction(it[0]).methodReference!! + val isRedesignedDrawerEnabledMethod = with(renderRedesignedDrawerMethodMatch) { + firstMethod(it.method.getInstruction(it[0]).methodReference!!) } - val isRedesignedDrawerEnabledMethod = firstMethod(isRedesignedDrawerEnabledMethodReference) isRedesignedDrawerEnabledMethod.returnEarly(false) } } \ No newline at end of file From d824190a1487dd1c1586f0eb3a58beff4b89f3a9 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 20 Mar 2026 20:11:01 +0100 Subject: [PATCH 5/6] Apply suggestion from @oSumAtrIX --- .../patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt index 232948b0ec..f30db2b953 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt @@ -15,7 +15,7 @@ val restoreOldEmojiDrawerPatch = bytecodePatch( apply { val isRedesignedDrawerEnabledMethod = with(renderRedesignedDrawerMethodMatch) { - firstMethod(it.method.getInstruction(it[0]).methodReference!!) + firstMethod(it.method.getInstruction(this[0]).methodReference!!) } isRedesignedDrawerEnabledMethod.returnEarly(false) } From dc1c538fa03d5dfc5fc56759b90b29c3ea51a765 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 20 Mar 2026 20:11:23 +0100 Subject: [PATCH 6/6] Apply suggestion from @oSumAtrIX --- .../patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt index f30db2b953..a53fcf133a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/RestoreOldEmojiDrawerPatch.kt @@ -15,7 +15,7 @@ val restoreOldEmojiDrawerPatch = bytecodePatch( apply { val isRedesignedDrawerEnabledMethod = with(renderRedesignedDrawerMethodMatch) { - firstMethod(it.method.getInstruction(this[0]).methodReference!!) + firstMethod(method.getInstruction(get(0)).methodReference!!) } isRedesignedDrawerEnabledMethod.returnEarly(false) }