commit d3d33dea534198024b3e149a05575a9992904fb3 parent 07d1760a73468a4c6b4958a4b2d57932f4bd8ead Author: rhunk <101876869+rhunk@users.noreply.github.com> Date: Sat, 20 Jan 2024 00:14:40 +0100 fix(core): snap preview Diffstat:
3 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/BindViewEvent.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/BindViewEvent.kt @@ -1,18 +1,24 @@ package me.rhunk.snapenhance.core.event.events.impl import android.view.View -import android.widget.LinearLayout import me.rhunk.snapenhance.core.event.Event +import me.rhunk.snapenhance.core.util.ktx.getId class BindViewEvent( val prevModel: Any, val nextModel: Any?, - val view: View + var view: View ): Event() { + val chatMessageContentContainerId by lazy { + view.resources.getId("chat_message_content_container") + } + inline fun chatMessage(block: (conversationId: String, messageId: String) -> Unit) { - if (view !is LinearLayout) return val modelToString = prevModel.toString() if (!modelToString.startsWith("ChatViewModel")) return + if (view.id != chatMessageContentContainerId) { + view = view.findViewById(chatMessageContentContainerId) ?: return + } modelToString.substringAfter("messageId=").substringBefore(",").split(":").apply { if (size != 3) return block(this[0], this[2]) diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/MessageLogger.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/MessageLogger.kt @@ -30,7 +30,7 @@ class MessageLogger : Feature("MessageLogger", companion object { const val PREFETCH_MESSAGE_COUNT = 20 const val PREFETCH_FEED_COUNT = 20 - const val DELETED_MESSAGE_COLOR = 0x2Eb71c1c + const val DELETED_MESSAGE_COLOR = 0x6Eb71c1c } private val messageLoggerInterface by lazy { context.bridgeClient.getMessageLogger() } diff --git a/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/CallbackMapper.kt b/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/CallbackMapper.kt @@ -1,11 +1,11 @@ package me.rhunk.snapenhance.mapper.impl +import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c +import com.android.tools.smali.dexlib2.iface.reference.MethodReference import me.rhunk.snapenhance.mapper.AbstractClassMapper import me.rhunk.snapenhance.mapper.ext.getClassName import me.rhunk.snapenhance.mapper.ext.getSuperClassName import me.rhunk.snapenhance.mapper.ext.isFinal -import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction21t -import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22t class CallbackMapper : AbstractClassMapper("Callbacks") { val callbacks = map("callbacks") @@ -21,11 +21,13 @@ class CallbackMapper : AbstractClassMapper("Callbacks") { if (clazz.getClassName().endsWith("\$CppProxy")) return@filter false - // ignore dummy ContentCallback class - if (superclassName.endsWith("ContentCallback") && clazz.methods.none { it.name == "handleContentResult" && it.implementation?.instructions?.firstOrNull { instruction -> - instruction is Instruction22t || instruction is Instruction21t - } != null}) - return@filter false + // ignore dummy ContentCallback classes + if (superclassName.endsWith("ContentCallback") && clazz.methods.none { method -> + method.name == "handleContentResult" && + method.implementation?.instructions?.firstOrNull { instruction -> + instruction is Instruction35c && (instruction.reference as? MethodReference)?.name == "getBoltContentId" + } != null + }) return@filter false val superClass = getClass(clazz.superclass) ?: return@filter false !superClass.isFinal()