use reflection of Message class
This commit is contained in:
@@ -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)
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user