Просмотр исходного кода

[core] Implement `ConstrainSingle` for `Audio` (fix #2093)

Him188 3 лет назад
Родитель
Сommit
f96c156d82

+ 2 - 1
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;
 }
 

+ 2 - 1
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;
 }
 

+ 3 - 1
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
 }