From 4283651b1e452146f50e1df9a50c9f4916e33606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E6=B1=A0?= Date: Sun, 18 Feb 2024 20:08:57 +0800 Subject: [PATCH] `Shamrock`: fix comm_elem parser --- .../java/protobuf/message/MessageElement.kt | 2 +- .../{RichMediaElement.kt => CommonElement.kt} | 2 +- .../service/listener/PrimitiveListener.kt | 25 +++++++++++-------- 3 files changed, 16 insertions(+), 13 deletions(-) rename protobuf/src/main/java/protobuf/message/element/{RichMediaElement.kt => CommonElement.kt} (90%) diff --git a/protobuf/src/main/java/protobuf/message/MessageElement.kt b/protobuf/src/main/java/protobuf/message/MessageElement.kt index 76b8b42..e29c76c 100644 --- a/protobuf/src/main/java/protobuf/message/MessageElement.kt +++ b/protobuf/src/main/java/protobuf/message/MessageElement.kt @@ -8,5 +8,5 @@ import protobuf.message.element.* data class MessageElement( @ProtoNumber(1) val text: TextElement? = null, @ProtoNumber(51) val json: JsonElement? = null, - @ProtoNumber(53) val richMedia: RichMediaElement? = null, + @ProtoNumber(53) val commElem: CommonElement? = null, ) \ No newline at end of file diff --git a/protobuf/src/main/java/protobuf/message/element/RichMediaElement.kt b/protobuf/src/main/java/protobuf/message/element/CommonElement.kt similarity index 90% rename from protobuf/src/main/java/protobuf/message/element/RichMediaElement.kt rename to protobuf/src/main/java/protobuf/message/element/CommonElement.kt index ec89d10..a72bac4 100644 --- a/protobuf/src/main/java/protobuf/message/element/RichMediaElement.kt +++ b/protobuf/src/main/java/protobuf/message/element/CommonElement.kt @@ -4,7 +4,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber @Serializable -data class RichMediaElement( +data class CommonElement( @ProtoNumber(1) val type: Int? = null, @ProtoNumber(2) val data: ByteArray? = null, @ProtoNumber(3) val u1: Int? = null, diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt index ecc690d..7ad79ef 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt @@ -109,19 +109,22 @@ internal object PrimitiveListener { } private fun onGroupMessage(msgTime: Long, body: MessageBody) { - body.rich?.elements?.filter { - it.richMedia != null - }?.map { - ProtoBuf.decodeFromByteArray(it.richMedia!!.data!!) - }?.forEach { - it.display?.show?.download?.url?.let { - RKEY_PATTERN.matcher(it).takeIf { - it.find() - }?.group(1)?.let { rkey -> - LogCenter.log("更新NT RKEY成功:$rkey") - RichProtoSvc.multiMediaRKey = rkey + runCatching { + body.rich?.elements?.filter { + it.commElem != null && it.commElem!!.type == 48 + }?.map { + ProtoBuf.decodeFromByteArray(it.commElem!!.data!!) + }?.forEach { + it.display?.show?.download?.url?.let { + RKEY_PATTERN.matcher(it).takeIf { + it.find() + }?.group(1)?.let { rkey -> + LogCenter.log("更新NT RKEY成功:$rkey") + RichProtoSvc.multiMediaRKey = rkey + } } } + } }