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 index 3c84aff0..4cd391b9 100644 --- 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 index 1cdfc8ee..18a5256a 100644 --- 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() - 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