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:
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