From a2b3e42eee80c36cafd42e59eed748d4c23663dc Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Wed, 6 Dec 2023 00:52:57 +0800 Subject: [PATCH] `Shamrock`: fix #125 --- .../fuqiuluo/qqinterface/servlet/GroupSvc.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt index 944893a..b36f4d2 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt @@ -2,6 +2,7 @@ package moe.fuqiuluo.qqinterface.servlet +import androidx.core.text.HtmlCompat import com.tencent.common.app.AppInterface import com.tencent.mobileqq.app.BusinessHandlerFactory import com.tencent.mobileqq.app.QQAppInterface @@ -805,12 +806,13 @@ internal object GroupSvc: BaseSvc() { senderId = obj["u"].asLong, publishTime = obj["pubt"].asLong, message = GroupAnnouncementMessage( - text = obj["msg"].asJsonObject["text"].asString, - images = obj["msg"].asJsonObject["pics"].asJsonArrayOrNull?.map { +// text = obj["msg"].asJsonObject["text"].asString, + text = fromHtml(obj["msg"].asJsonObject["text"].asString), + images = obj["msg"].asJsonObject["pics"].asJsonArrayOrNull?.map { pic -> GroupAnnouncementMessageImage( - id = it.jsonObject["id"].asString, - width = it.jsonObject["w"].asString, - height = it.jsonObject["h"].asString, + id = pic.jsonObject["id"].asString, + width = pic.jsonObject["w"].asString, + height = pic.jsonObject["h"].asString, ) } ?: ArrayList() ) @@ -821,6 +823,14 @@ internal object GroupSvc: BaseSvc() { } } + private fun fromHtml(htmlString: String): String { + return HtmlCompat + // 特殊处理 ,目的是替换为换行符,否则会被fromHtml忽略并移除 + .fromHtml(htmlString.replace(" ", "[shamrockplaceholder]"), HtmlCompat.FROM_HTML_MODE_LEGACY) + .toString() + .replace("[shamrockplaceholder]", "\n") + } + @OptIn(ExperimentalSerializationApi::class) suspend fun uploadImageTroopNotice(image: String): Result { val file = FileUtils.parseAndSave(image)