From b4f77454a18058480a0c6dcf4869b121dedb0f54 Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Fri, 3 Apr 2020 08:48:22 +0800
Subject: [PATCH] Fix FlashImage constructing

---
 .../net/mamoe/mirai/qqandroid/message/convension.kt  | 10 ++++++----
 .../net.mamoe.mirai/message/data/FlashImage.kt       | 12 ++++++++++--
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt
index 6c552805a..05768a936 100644
--- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt
+++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt
@@ -116,8 +116,10 @@ internal fun MessageChain.toRichTextElems(forGroup: Boolean, withGeneralFlags: B
             is OnlineGroupImageImpl -> elements.add(ImMsgBody.Elem(customFace = it.delegate))
             is OnlineFriendImageImpl -> elements.add(ImMsgBody.Elem(notOnlineImage = it.delegate))
             is OfflineFriendImage -> elements.add(ImMsgBody.Elem(notOnlineImage = it.toJceData()))
-            is GroupFlashImageImpl -> elements.add(it.toJceData()).also { transformOneMessage(UNSUPPORTED_FLASH_MESSAGE_PLAIN) }
-            is FriendFlashImageImpl -> elements.add(it.toJceData()).also { transformOneMessage(UNSUPPORTED_FLASH_MESSAGE_PLAIN) }
+            is GroupFlashImage -> elements.add(it.toJceData())
+                .also { transformOneMessage(UNSUPPORTED_FLASH_MESSAGE_PLAIN) }
+            is FriendFlashImage -> elements.add(it.toJceData())
+                .also { transformOneMessage(UNSUPPORTED_FLASH_MESSAGE_PLAIN) }
             is AtAll -> elements.add(atAllData)
             is Face -> elements.add(ImMsgBody.Elem(face = it.toJceData()))
             is QuoteReplyToSend -> {
@@ -303,10 +305,10 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChainBuilde
                     3 -> {
                         val proto = it.commonElem.pbElem.loadAs(HummerCommelem.MsgElemInfoServtype3.serializer())
                         if (proto.flashTroopPic != null) {
-                            message.add(GroupFlashImageImpl(OnlineGroupImageImpl(proto.flashTroopPic)))
+                            message.add(GroupFlashImage(OnlineGroupImageImpl(proto.flashTroopPic)))
                         }
                         if (proto.flashC2cPic != null) {
-                            message.add(FriendFlashImageImpl(OnlineFriendImageImpl(proto.flashC2cPic)))
+                            message.add(FriendFlashImage(OnlineFriendImageImpl(proto.flashC2cPic)))
                         }
                     }
                 }
diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/FlashImage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/FlashImage.kt
index b0cc06eb7..d18c82d6e 100644
--- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/FlashImage.kt
+++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/FlashImage.kt
@@ -2,6 +2,7 @@
 
 package net.mamoe.mirai.message.data
 
+import net.mamoe.mirai.utils.MiraiInternalAPI
 import net.mamoe.mirai.utils.SinceMirai
 import kotlin.jvm.JvmSynthetic
 
@@ -14,6 +15,7 @@ import kotlin.jvm.JvmSynthetic
 sealed class FlashImage : MessageContent {
     companion object Key : Message.Key<FlashImage> {
         operator fun invoke(image: Image): FlashImage {
+            @OptIn(MiraiInternalAPI::class)
             return when (image) {
                 is GroupImage -> GroupFlashImage(image)
                 is FriendImage -> FriendFlashImage(image)
@@ -51,6 +53,12 @@ inline fun GroupImage.flash(): GroupFlashImage = FlashImage(this) as GroupFlashI
 @JvmSynthetic
 inline fun FriendImage.flash(): FriendFlashImage = FlashImage(this) as FriendFlashImage
 
-class GroupFlashImage internal constructor(override val image: GroupImage) : FlashImage()
+/**
+ * @see FlashImage.invoke
+ */
+class GroupFlashImage @MiraiInternalAPI constructor(override val image: GroupImage) : FlashImage()
 
-class FriendFlashImage internal constructor(override val image: FriendImage) : FlashImage()
\ No newline at end of file
+/**
+ * @see FlashImage.invoke
+ */
+class FriendFlashImage @MiraiInternalAPI constructor(override val image: FriendImage) : FlashImage()
\ No newline at end of file