commit ebf796c23b8a77c0afb05cb312494e4501fc5e9a
parent 4ac036273b65fdefd7267ac28c3381ac215db0c3
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Mon, 15 May 2023 18:32:53 +0200

use reflection of Message class

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/Message.kt | 2++
Mapp/src/main/kotlin/me/rhunk/snapenhance/features/impl/spy/MessageLogger.kt | 10++++++----
2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/Message.kt b/app/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/Message.kt @@ -1,5 +1,6 @@ package me.rhunk.snapenhance.data.wrapper.impl +import me.rhunk.snapenhance.data.MessageState import me.rhunk.snapenhance.data.wrapper.AbstractWrapper import me.rhunk.snapenhance.util.getObjectField @@ -9,4 +10,5 @@ class Message(obj: Any) : AbstractWrapper(obj) { val messageContent get() = MessageContent(instance.getObjectField("mMessageContent")) val messageDescriptor get() = MessageDescriptor(instance.getObjectField("mDescriptor")) val messageMetadata get() = MessageMetadata(instance.getObjectField("mMetadata")) + val messageState get() = getEnumValue("mMessageState", MessageState.COMMITTED) } \ No newline at end of file diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/spy/MessageLogger.kt b/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/spy/MessageLogger.kt @@ -4,6 +4,7 @@ import com.google.gson.JsonParser import me.rhunk.snapenhance.config.ConfigProperty import me.rhunk.snapenhance.data.ContentType import me.rhunk.snapenhance.data.MessageState +import me.rhunk.snapenhance.data.wrapper.impl.Message import me.rhunk.snapenhance.features.Feature import me.rhunk.snapenhance.features.FeatureLoadParams import me.rhunk.snapenhance.hook.HookStage @@ -16,14 +17,15 @@ class MessageLogger : Feature("MessageLogger", loadParams = FeatureLoadParams.IN fun isMessageRemoved(messageId: Long) = removedMessages.contains(messageId) + //FIXME: message disappears when the conversation is set to delete on view override fun init() { Hooker.hookConstructor(context.classCache.message, HookStage.AFTER, { context.config.bool(ConfigProperty.MESSAGE_LOGGER) }) { - val message = it.thisObject<Any>() - val messageId = message.getObjectField("mDescriptor").getObjectField("mMessageId") as Long - val contentType = ContentType.valueOf(message.getObjectField("mMessageContent").getObjectField("mContentType").toString()) - val messageState = MessageState.valueOf(message.getObjectField("mState").toString()) + val message = Message(it.thisObject()) + val messageId = message.messageDescriptor.messageId + val contentType = message.messageContent.contentType + val messageState = message.messageState if (messageState != MessageState.COMMITTED) return@hookConstructor