From 6043c21de5634984235efa23c5a7d2b09c6280ba Mon Sep 17 00:00:00 2001 From: WhiteChi Date: Fri, 3 Nov 2023 01:17:11 +0800 Subject: [PATCH] =?UTF-8?q?`ShamrockPublic`:=20=E8=87=AA=E7=99=BA=E3=83=A1?= =?UTF-8?q?=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E5=90=8C=E6=9C=9F=E3=83=AD?= =?UTF-8?q?=E3=82=B8=E3=83=83=E3=82=AF=E3=81=AE=E5=A4=89=E6=9B=B4=20x2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: WhiteChi --- .../remote/service/listener/AioListener.kt | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt index 618928d..bc16799 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt @@ -126,12 +126,32 @@ internal object AioListener: IKernelMsgListener { override fun onMsgInfoListUpdate(msgList: ArrayList?) { msgList?.forEach { record -> GlobalScope.launch { - if (!ShamrockConfig.enableSelfMsg()) + if (record.sendStatus == MsgConstant.KSENDSTATUSFAILED + || record.sendStatus == MsgConstant.KSENDSTATUSSENDING) { return@launch + } val msgHash = MessageHelper.generateMsgIdHash(record.chatType, record.msgId) - MessageDB.getInstance().messageMappingDao().updateMsgSeqByMsgHash(msgHash, record.msgSeq.toInt()) + val mapping = MessageHelper.getMsgMappingByHash(msgHash) + if (mapping == null) { + MessageHelper.saveMsgMapping( + hash = msgHash, + qqMsgId = record.msgId, + chatType = record.chatType, + subChatType = record.chatType, + peerId = record.peerUin.toString(), + msgSeq = record.msgSeq.toInt(), + time = record.msgTime + ) + } + + if (!ShamrockConfig.enableSelfMsg()) + return@launch + + LogCenter.log("Update message info from ${mapping?.msgSeq} to ${record.msgSeq}", Level.INFO) + MessageDB.getInstance().messageMappingDao() + .updateMsgSeqByMsgHash(msgHash, record.msgSeq.toInt()) val rawMsg = record.elements.toCQCode(record.chatType, record.peerUin.toString()) if (rawMsg.isEmpty()) return@launch