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

Correct format name of GroupImage

Karlatemp 5 лет назад
Родитель
Сommit
0a5d3097f7

+ 4 - 3
mirai-core-api/src/commonMain/kotlin/utils/ExternalImage.kt

@@ -73,8 +73,9 @@ public class ExternalImage internal constructor(
         }
 
         @MiraiExperimentalApi
-        public fun generateImageId(md5: ByteArray): String {
-            return """{${generateUUID(md5)}}.$defaultFormatName"""
+        @JvmOverloads
+        public fun generateImageId(md5: ByteArray, format: String = defaultFormatName): String {
+            return """{${generateUUID(md5)}}.$format"""
         }
     }
 
@@ -87,7 +88,7 @@ public class ExternalImage internal constructor(
         return "ExternalImage(${generateUUID(md5)})"
     }
 
-    internal fun calculateImageResourceId(): String = """{${generateUUID(md5)}}.$formatName"""
+    internal fun calculateImageResourceId(): String = generateImageId(md5, formatName)
 
     private fun String.detectFormatName(): String = when {
         startsWith("FFD8") -> "jpg"

+ 4 - 1
mirai-core/src/commonMain/kotlin/message/imagesImpl.kt

@@ -32,7 +32,10 @@ internal class OnlineGroupImageImpl(
     internal val delegate: ImMsgBody.CustomFace
 ) : @Suppress("DEPRECATION")
 OnlineGroupImage() {
-    override val imageId: String = delegate.filePath.takeIf {
+    override val imageId: String = ExternalImage.generateImageId(
+        delegate.md5,
+        delegate.filePath.substringAfterLast('.')
+    ).takeIf {
         GROUP_IMAGE_ID_REGEX.matches(it)
     } ?: ExternalImage.generateImageId(delegate.md5)