mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-24 23:20:09 +08:00
Add fallback strategy to generate OfflineFriendImage.imageId on AbstractUser.uploadImage #933
This commit is contained in:
parent
f326e9ad6f
commit
c572a7e434
@ -16,6 +16,7 @@ import net.mamoe.mirai.data.UserInfo
|
|||||||
import net.mamoe.mirai.event.broadcast
|
import net.mamoe.mirai.event.broadcast
|
||||||
import net.mamoe.mirai.event.events.*
|
import net.mamoe.mirai.event.events.*
|
||||||
import net.mamoe.mirai.internal.message.OfflineFriendImage
|
import net.mamoe.mirai.internal.message.OfflineFriendImage
|
||||||
|
import net.mamoe.mirai.internal.message.contextualBugReportException
|
||||||
import net.mamoe.mirai.internal.message.getImageType
|
import net.mamoe.mirai.internal.message.getImageType
|
||||||
import net.mamoe.mirai.internal.network.highway.ChannelKind
|
import net.mamoe.mirai.internal.network.highway.ChannelKind
|
||||||
import net.mamoe.mirai.internal.network.highway.Highway
|
import net.mamoe.mirai.internal.network.highway.Highway
|
||||||
@ -26,6 +27,7 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x352
|
|||||||
import net.mamoe.mirai.internal.network.protocol.packet.chat.image.ImgStore
|
import net.mamoe.mirai.internal.network.protocol.packet.chat.image.ImgStore
|
||||||
import net.mamoe.mirai.internal.network.protocol.packet.chat.image.LongConn
|
import net.mamoe.mirai.internal.network.protocol.packet.chat.image.LongConn
|
||||||
import net.mamoe.mirai.internal.network.protocol.packet.sendAndExpect
|
import net.mamoe.mirai.internal.network.protocol.packet.sendAndExpect
|
||||||
|
import net.mamoe.mirai.internal.utils._miraiContentToString
|
||||||
import net.mamoe.mirai.message.MessageReceipt
|
import net.mamoe.mirai.message.MessageReceipt
|
||||||
import net.mamoe.mirai.message.data.Image
|
import net.mamoe.mirai.message.data.Image
|
||||||
import net.mamoe.mirai.message.data.Message
|
import net.mamoe.mirai.message.data.Message
|
||||||
@ -70,14 +72,29 @@ internal abstract class AbstractUser(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return when (resp) {
|
return when (resp) {
|
||||||
is LongConn.OffPicUp.Response.FileExists -> OfflineFriendImage(
|
is LongConn.OffPicUp.Response.FileExists -> {
|
||||||
imageId = generateImageIdFromResourceId(
|
val imageType = getImageType(resp.imageInfo.fileType)
|
||||||
resourceId = resp.resourceId,
|
.takeIf { it != ExternalResource.DEFAULT_FORMAT_NAME }
|
||||||
format = getImageType(resp.imageInfo.fileType).takeIf { it != ExternalResource.DEFAULT_FORMAT_NAME }
|
?: resource.formatName
|
||||||
?: resource.formatName
|
|
||||||
) ?: resp.resourceId
|
OfflineFriendImage(
|
||||||
).also {
|
imageId = generateImageIdFromResourceId(
|
||||||
ImageUploadEvent.Succeed(this, resource, it).broadcast()
|
resourceId = resp.resourceId,
|
||||||
|
format = imageType
|
||||||
|
) ?: kotlin.run {
|
||||||
|
if (resp.imageInfo.fileMd5.size == 16) {
|
||||||
|
generateImageId(resp.imageInfo.fileMd5, imageType)
|
||||||
|
} else {
|
||||||
|
throw contextualBugReportException(
|
||||||
|
"Failed to compute friend image image from resourceId: ${resp.resourceId}",
|
||||||
|
resp._miraiContentToString(),
|
||||||
|
additional = "并附加此时正在上传的文件"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
).also {
|
||||||
|
ImageUploadEvent.Succeed(this, resource, it).broadcast()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is LongConn.OffPicUp.Response.RequireUpload -> {
|
is LongConn.OffPicUp.Response.RequireUpload -> {
|
||||||
|
Loading…
Reference in New Issue
Block a user