diff --git a/app/src/main/java/moe/fuqiuluo/shamrock/ui/app/ShamrockConfig.kt b/app/src/main/java/moe/fuqiuluo/shamrock/ui/app/ShamrockConfig.kt index 2aec6f8..f978d16 100644 --- a/app/src/main/java/moe/fuqiuluo/shamrock/ui/app/ShamrockConfig.kt +++ b/app/src/main/java/moe/fuqiuluo/shamrock/ui/app/ShamrockConfig.kt @@ -279,9 +279,9 @@ object ShamrockConfig { return preferences.getBoolean("enable_self_msg", false) } - fun enableSyncMsg(ctx: Context): Boolean { + fun enableSyncMsgAsSentMsg(ctx: Context): Boolean { val preferences = ctx.getSharedPreferences("config", 0) - return preferences.getBoolean("enable_sync_msg", false) + return preferences.getBoolean("enable_sync_msg_as_sent_msg", false) } fun setEnableSelfMsg(ctx: Context, v: Boolean) { @@ -289,9 +289,9 @@ object ShamrockConfig { preferences.edit().putBoolean("enable_self_msg", v).apply() } - fun setEnableSyncMsg(ctx: Context, v: Boolean) { + fun setEnableSyncMsgAsSentMsg(ctx: Context, v: Boolean) { val preferences = ctx.getSharedPreferences("config", 0) - preferences.edit().putBoolean("enable_sync_msg", v).apply() + preferences.edit().putBoolean("enable_sync_msg_as_sent_msg", v).apply() } fun getConfigMap(ctx: Context): Map { @@ -321,7 +321,7 @@ object ShamrockConfig { "echo_number" to preferences.getBoolean("echo_number", false), "shell" to preferences.getBoolean("shell", false), "alive_reply" to preferences.getBoolean("alive_reply", false), - "enable_sync_msg" to preferences.getBoolean("enable_sync_msg", false), + "enable_sync_msg_as_sent_msg" to preferences.getBoolean("enable_sync_msg_as_sent_msg", false), ) } diff --git a/app/src/main/java/moe/fuqiuluo/shamrock/ui/fragment/LabFragment.kt b/app/src/main/java/moe/fuqiuluo/shamrock/ui/fragment/LabFragment.kt index 02dc594..6019dfd 100644 --- a/app/src/main/java/moe/fuqiuluo/shamrock/ui/fragment/LabFragment.kt +++ b/app/src/main/java/moe/fuqiuluo/shamrock/ui/fragment/LabFragment.kt @@ -264,17 +264,6 @@ fun LabFragment() { thickness = 0.2.dp ) - Function( - title = "同步消息推送", - desc = "推送来自同号异设备消息,未做特殊处理请勿打开。", - descColor = it, - isSwitch = ShamrockConfig.enableSyncMsg(ctx) - ) { - ShamrockConfig.setEnableSyncMsg(ctx, it) - ShamrockConfig.pushUpdate(ctx) - return@Function true - } - Function( title = "自发消息推送", desc = "推送Bot发送的消息,未做特殊处理请勿打开。", @@ -286,6 +275,17 @@ fun LabFragment() { return@Function true } + Function( + title = "同步消息推送类型异换", + desc = "推送来自同号异设备消息,将同步消息作为自发消息推送。", + descColor = it, + isSwitch = ShamrockConfig.enableSyncMsgAsSentMsg(ctx) + ) { + ShamrockConfig.setEnableSyncMsgAsSentMsg(ctx, it) + ShamrockConfig.pushUpdate(ctx) + return@Function true + } + /* Function( title = "使用纯数字ECHO", diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/ContactHelper.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/ContactHelper.kt index 8bab209..a181a5e 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/ContactHelper.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/ContactHelper.kt @@ -10,7 +10,7 @@ import kotlin.coroutines.resume internal object ContactHelper { suspend fun getUinByUidAsync(uid: String): String { if (uid.isBlank() || uid == "0") { - return "0" + return "-1" } val kernelService = NTServiceFetcher.kernelService @@ -20,7 +20,7 @@ internal object ContactHelper { sessionService.uixConvertService.getUin(hashSetOf(uid)) { continuation.resume(it) } - }[uid]?.toString() ?: "0" + }[uid]?.toString() ?: "-1" } suspend fun getUidByUinAsync(peerId: Long): String { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt index 75d1ef4..b8a5715 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt @@ -59,7 +59,7 @@ internal object GlobalEventTransmitter: BaseSvc() { elements: ArrayList, rawMsg: String, msgHash: Int, - postType: PostType = PostType.Msg + postType: PostType ): Boolean { val uin = app.longAccountUin transMessageEvent(record, @@ -107,7 +107,7 @@ internal object GlobalEventTransmitter: BaseSvc() { elements: ArrayList, rawMsg: String, msgHash: Int, - postType: PostType = PostType.Msg, + postType: PostType, tempSource: MessageTempSource = MessageTempSource.Unknown ): Boolean { val botUin = app.longAccountUin diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/config/ShamrockConfig.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/config/ShamrockConfig.kt index 569f80f..80ad947 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/config/ShamrockConfig.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/config/ShamrockConfig.kt @@ -76,7 +76,7 @@ internal object ShamrockConfig { putBoolean("enable_self_msg", intent.getBooleanExtra("enable_self_msg", false)) // 推送自己发的消息 putBoolean("shell", intent.getBooleanExtra("shell", false)) // 开启Shell接口 - putBoolean("enable_sync_msg", intent.getBooleanExtra("enable_sync_msg", false)) // 推送同步消息 + putBoolean("enable_sync_msg_as_sent_msg", intent.getBooleanExtra("enable_sync_msg_as_sent_msg", false)) // 推送同步消息 putBoolean("isInit", true) } @@ -102,8 +102,8 @@ internal object ShamrockConfig { return Config.rules?.privateRule } - fun enableSyncMsg(): Boolean { - return mmkv.getBoolean("enable_sync_msg", false) + fun enableSyncMsgAsSentMsg(): Boolean { + return mmkv.getBoolean("enable_sync_msg_as_sent_msg", false) } fun enableSelfMsg(): Boolean { 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 0ca896f..2304ee5 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 @@ -67,10 +67,10 @@ internal object AioListener : IKernelMsgListener { MessageHelper.sendMessageWithoutMsgId(record.chatType, record.peerUin.toString(), "pong", { _, _ -> }) } - if (record.senderUin == TicketSvc.getLongUin() && !ShamrockConfig.enableSyncMsg()) { - // 不允许推送同步消息 - return - } + + val postType = if (record.senderUin == TicketSvc.getLongUin() && ShamrockConfig.enableSyncMsgAsSentMsg()) { + PostType.MsgSent + } else PostType.Msg //if (rawMsg.contains("forward")) { // LogCenter.log(record.extInfoForUI.decodeToString(), Level.WARN) @@ -85,8 +85,8 @@ internal object AioListener : IKernelMsgListener { } if(!GlobalEventTransmitter.MessageTransmitter.transGroupMessage( - record, record.elements, rawMsg, msgHash - )) { + record, record.elements, rawMsg, msgHash, postType + )) { LogCenter.log("群消息推送失败 -> 推送目标可能不存在", Level.WARN) } } @@ -98,8 +98,8 @@ internal object AioListener : IKernelMsgListener { } if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage( - record, record.elements, rawMsg, msgHash - )) { + record, record.elements, rawMsg, msgHash, postType + )) { LogCenter.log("私聊消息推送失败 -> MessageTransmitter", Level.WARN) } } @@ -114,7 +114,7 @@ internal object AioListener : IKernelMsgListener { } if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage( - record, record.elements, rawMsg, msgHash, tempSource = MessageTempSource.Group + record, record.elements, rawMsg, msgHash, tempSource = MessageTempSource.Group, postType = postType )) { LogCenter.log("私聊临时消息推送失败 -> MessageTransmitter", Level.WARN) } @@ -188,8 +188,7 @@ internal object AioListener : IKernelMsgListener { if (!ShamrockConfig.enableSelfMsg() || record.senderUin != TicketSvc.getLongUin() || record.peerUin == TicketSvc.getLongUin() - ) - return@launch + ) return@launch val rawMsg = record.elements.toCQCode(record.chatType, record.peerUin.toString()) if (rawMsg.isEmpty()) return@launch