From f96c156d82a6697f623707c49ca507ed1908aaab Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Fri, 12 Aug 2022 09:14:16 +0800 Subject: [PATCH] [core] Implement `ConstrainSingle` for `Audio` (fix #2093) --- .../compatibility-validation/android/api/android.api | 3 ++- mirai-core-api/compatibility-validation/jvm/api/jvm.api | 3 ++- mirai-core-api/src/commonMain/kotlin/message/data/Audio.kt | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/mirai-core-api/compatibility-validation/android/api/android.api b/mirai-core-api/compatibility-validation/android/api/android.api index 99ea5765a..9de5741a0 100644 --- a/mirai-core-api/compatibility-validation/android/api/android.api +++ b/mirai-core-api/compatibility-validation/android/api/android.api @@ -3489,7 +3489,7 @@ public final class net/mamoe/mirai/message/data/AtAll : net/mamoe/mirai/message/ public fun toString ()Ljava/lang/String; } -public abstract interface class net/mamoe/mirai/message/data/Audio : net/mamoe/mirai/message/data/MessageContent { +public abstract interface class net/mamoe/mirai/message/data/Audio : net/mamoe/mirai/message/data/ConstrainSingle, net/mamoe/mirai/message/data/MessageContent { public static final field Key Lnet/mamoe/mirai/message/data/Audio$Key; public fun contentToString ()Ljava/lang/String; public abstract fun getCodec ()Lnet/mamoe/mirai/message/data/AudioCodec; @@ -3497,6 +3497,7 @@ public abstract interface class net/mamoe/mirai/message/data/Audio : net/mamoe/m public abstract fun getFileMd5 ()[B public abstract fun getFileSize ()J public abstract fun getFilename ()Ljava/lang/String; + public fun getKey ()Lnet/mamoe/mirai/message/data/MessageKey; public abstract fun toString ()Ljava/lang/String; } diff --git a/mirai-core-api/compatibility-validation/jvm/api/jvm.api b/mirai-core-api/compatibility-validation/jvm/api/jvm.api index 9755071f6..f700f29e7 100644 --- a/mirai-core-api/compatibility-validation/jvm/api/jvm.api +++ b/mirai-core-api/compatibility-validation/jvm/api/jvm.api @@ -3489,7 +3489,7 @@ public final class net/mamoe/mirai/message/data/AtAll : net/mamoe/mirai/message/ public fun toString ()Ljava/lang/String; } -public abstract interface class net/mamoe/mirai/message/data/Audio : net/mamoe/mirai/message/data/MessageContent { +public abstract interface class net/mamoe/mirai/message/data/Audio : net/mamoe/mirai/message/data/ConstrainSingle, net/mamoe/mirai/message/data/MessageContent { public static final field Key Lnet/mamoe/mirai/message/data/Audio$Key; public fun contentToString ()Ljava/lang/String; public abstract fun getCodec ()Lnet/mamoe/mirai/message/data/AudioCodec; @@ -3497,6 +3497,7 @@ public abstract interface class net/mamoe/mirai/message/data/Audio : net/mamoe/m public abstract fun getFileMd5 ()[B public abstract fun getFileSize ()J public abstract fun getFilename ()Ljava/lang/String; + public fun getKey ()Lnet/mamoe/mirai/message/data/MessageKey; public abstract fun toString ()Ljava/lang/String; } diff --git a/mirai-core-api/src/commonMain/kotlin/message/data/Audio.kt b/mirai-core-api/src/commonMain/kotlin/message/data/Audio.kt index 83aba76d3..6a106dba3 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/data/Audio.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/Audio.kt @@ -63,7 +63,7 @@ import kotlin.time.Duration.Companion.seconds * * @since 2.7 */ -public sealed interface Audio : MessageContent { +public sealed interface Audio : MessageContent, ConstrainSingle { public companion object Key : AbstractPolymorphicMessageKey<MessageContent, Audio>(MessageContent, { it.safeCast() }) @@ -112,6 +112,8 @@ public sealed interface Audio : MessageContent { override fun <D, R> accept(visitor: MessageVisitor<D, R>, data: D): R { return visitor.visitAudio(this, data) } + + override val key: MessageKey<*> get() = Key }