mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-24 15:00:38 +08:00
Unified group imageId
This commit is contained in:
parent
2cd2591ff6
commit
0015f3817c
@ -15,6 +15,7 @@ import kotlinx.io.core.readUInt
|
|||||||
import net.mamoe.mirai.message.data.*
|
import net.mamoe.mirai.message.data.*
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm
|
||||||
|
import net.mamoe.mirai.utils.ExternalImage
|
||||||
import net.mamoe.mirai.utils.MiraiDebugAPI
|
import net.mamoe.mirai.utils.MiraiDebugAPI
|
||||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
import net.mamoe.mirai.utils.io.discardExact
|
import net.mamoe.mirai.utils.io.discardExact
|
||||||
@ -249,7 +250,7 @@ internal fun MessageChain.toRichTextElems(): MutableList<ImMsgBody.Elem> {
|
|||||||
internal class CustomFaceFromServer(
|
internal class CustomFaceFromServer(
|
||||||
internal val delegate: ImMsgBody.CustomFace
|
internal val delegate: ImMsgBody.CustomFace
|
||||||
) : CustomFace() {
|
) : CustomFace() {
|
||||||
override val filepath: String get() = delegate.filePath
|
override val filepath: String = delegate.filePath
|
||||||
override val fileId: Int get() = delegate.fileId
|
override val fileId: Int get() = delegate.fileId
|
||||||
override val serverIp: Int get() = delegate.serverIp
|
override val serverIp: Int get() = delegate.serverIp
|
||||||
override val serverPort: Int get() = delegate.serverPort
|
override val serverPort: Int get() = delegate.serverPort
|
||||||
@ -265,14 +266,14 @@ internal class CustomFaceFromServer(
|
|||||||
override val size: Int get() = delegate.size
|
override val size: Int get() = delegate.size
|
||||||
override val original: Int get() = delegate.origin
|
override val original: Int get() = delegate.origin
|
||||||
override val pbReserve: ByteArray get() = delegate.pbReserve
|
override val pbReserve: ByteArray get() = delegate.pbReserve
|
||||||
override val imageId: String get() = delegate.filePath
|
override val imageId: String = ExternalImage.generateImageId(delegate.md5, imageType)
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
return other is CustomFaceFromServer && other.filepath == this.filepath && other.md5.contentEquals(this.md5)
|
return other is CustomFaceFromServer && other.filepath == this.filepath && other.md5.contentEquals(this.md5)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return filepath.hashCode() + 31 * md5.hashCode()
|
return imageId.hashCode() + 31 * md5.hashCode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,7 +297,7 @@ internal class NotOnlineImageFromServer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return resourceId.hashCode() + 31 * md5.hashCode()
|
return imageId.hashCode() + 31 * md5.hashCode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,6 +54,36 @@ class ExternalImage(
|
|||||||
fun generateUUID(md5: ByteArray): String {
|
fun generateUUID(md5: ByteArray): String {
|
||||||
return "${md5[0..3]}-${md5[4..5]}-${md5[6..7]}-${md5[8..9]}-${md5[10..15]}"
|
return "${md5[0..3]}-${md5[4..5]}-${md5[6..7]}-${md5[8..9]}-${md5[10..15]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun generateImageId(md5: ByteArray, imageType: Int): String {
|
||||||
|
return """{${generateUUID(md5)}}.${determineFormat(imageType)}"""
|
||||||
|
}
|
||||||
|
|
||||||
|
fun determineImageType(format: String): Int {
|
||||||
|
return when (format) {
|
||||||
|
"jpg" -> 1000
|
||||||
|
"png" -> 1001
|
||||||
|
"webp" -> 1002
|
||||||
|
"bmp" -> 1005
|
||||||
|
"gig" -> 2000
|
||||||
|
"apng" -> 2001
|
||||||
|
"sharpp" -> 1004
|
||||||
|
else -> 1000 // unsupported, just make it jpg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun determineFormat(imageType: Int): String {
|
||||||
|
return when (imageType) {
|
||||||
|
1000 -> "jpg"
|
||||||
|
1001 -> "png"
|
||||||
|
1002 -> "webp"
|
||||||
|
1005 -> "bmp"
|
||||||
|
2000 -> "gig"
|
||||||
|
2001 -> "apng"
|
||||||
|
1004 -> "sharpp"
|
||||||
|
else -> "jpg" // unsupported, just make it jpg
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val format: String =
|
val format: String =
|
||||||
@ -73,16 +103,7 @@ class ExternalImage(
|
|||||||
* SHARPP: 1004
|
* SHARPP: 1004
|
||||||
*/
|
*/
|
||||||
val imageType: Int
|
val imageType: Int
|
||||||
get() = when (format) {
|
get() = determineImageType(format)
|
||||||
"jpg" -> 1000
|
|
||||||
"png" -> 1001
|
|
||||||
"webp" -> 1002
|
|
||||||
"bmp" -> 1005
|
|
||||||
"gig" -> 2000
|
|
||||||
"apng" -> 2001
|
|
||||||
"sharpp" -> 1004
|
|
||||||
else -> 1000 // unsupported, just make it jpg
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun toString(): String = "[ExternalImage(${width}x$height $format)]"
|
override fun toString(): String = "[ExternalImage(${width}x$height $format)]"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user