Commit ca0d0969 authored by Him188's avatar Him188

Add fast-paths

parent 49e34f83
...@@ -334,7 +334,7 @@ internal fun MsgComm.Msg.toMessageChain(): MessageChain { ...@@ -334,7 +334,7 @@ internal fun MsgComm.Msg.toMessageChain(): MessageChain {
return buildMessageChain(elements.size + 1) { return buildMessageChain(elements.size + 1) {
+MessageSourceFromMsg(delegate = this@toMessageChain) +MessageSourceFromMsg(delegate = this@toMessageChain)
elements.joinToMessageChain(this) elements.joinToMessageChain(this)
}.removeAtAfterQuoteReply().asMessageChain() }.removeAtIfHasQuoteReply()
} }
// These two functions are not identical, dont combine. // These two functions are not identical, dont combine.
...@@ -345,23 +345,23 @@ internal fun ImMsgBody.SourceMsg.toMessageChain(): MessageChain { ...@@ -345,23 +345,23 @@ internal fun ImMsgBody.SourceMsg.toMessageChain(): MessageChain {
return buildMessageChain(elements.size + 1) { return buildMessageChain(elements.size + 1) {
+MessageSourceFromServer(delegate = this@toMessageChain) +MessageSourceFromServer(delegate = this@toMessageChain)
elements.joinToMessageChain(this) elements.joinToMessageChain(this)
}.removeAtAfterQuoteReply().asMessageChain() }.removeAtIfHasQuoteReply()
} }
private fun MessageChain.removeAtAfterQuoteReply(): List<Message> { private fun MessageChain.removeAtIfHasQuoteReply(): MessageChain =
var last: Message? = null this
return this.filter { message: Message -> /*
if (message is At) { // 筛除因 QuoteReply 导致的多余的 At if (this.any<QuoteReply>()) {
if (last != null || last !is QuoteReply) { var removed = false
return@filter true this.filter {
if (it is At && !removed) {
false
} else {
removed = true
true
} }
} else if (message is MessageContent) { }.asMessageChain()
return@filter true } else this*/
}
last = message
return@filter false
}
}
@UseExperimental(MiraiInternalAPI::class, ExperimentalUnsignedTypes::class, MiraiDebugAPI::class, LowLevelAPI::class) @UseExperimental(MiraiInternalAPI::class, ExperimentalUnsignedTypes::class, MiraiDebugAPI::class, LowLevelAPI::class)
internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChainBuilder) { internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChainBuilder) {
......
...@@ -229,6 +229,8 @@ fun Collection<Message>.asMessageChain(): MessageChain = MessageChainImplBySeque ...@@ -229,6 +229,8 @@ fun Collection<Message>.asMessageChain(): MessageChain = MessageChainImplBySeque
@JvmSynthetic @JvmSynthetic
fun Iterable<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplByIterable(this) fun Iterable<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplByIterable(this)
inline fun MessageChain.asMessageChain(): MessageChain = this // 避免套娃
/** /**
* 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain] * 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain]
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment