初步替换IM接口
This commit is contained in:
@@ -5,8 +5,8 @@ import android.icu.util.Calendar
|
||||
import com.aiosman.ravenow.ConstVars
|
||||
import com.aiosman.ravenow.exp.formatChatTime
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.tencent.imsdk.v2.V2TIMImageElem
|
||||
import com.tencent.imsdk.v2.V2TIMMessage
|
||||
import io.openim.android.sdk.models.Message
|
||||
import io.openim.android.sdk.models.PictureElem
|
||||
|
||||
data class ChatItem(
|
||||
val message: String,
|
||||
@@ -16,7 +16,7 @@ data class ChatItem(
|
||||
val nickname: String,
|
||||
val timeCategory: String = "",
|
||||
val timestamp: Long = 0,
|
||||
val imageList: MutableList<V2TIMImageElem.V2TIMImage> = emptyList<V2TIMImageElem.V2TIMImage>().toMutableList(),
|
||||
val imageList: MutableList<PictureInfo> = emptyList<PictureInfo>().toMutableList(),
|
||||
val messageType: Int = 0,
|
||||
val textDisplay: String = "",
|
||||
val msgId: String, // Add this property
|
||||
@@ -24,63 +24,81 @@ data class ChatItem(
|
||||
var showTimeDivider: Boolean = false
|
||||
) {
|
||||
companion object {
|
||||
fun convertToChatItem(message: V2TIMMessage, context: Context,avatar: String? = null): ChatItem? {
|
||||
val timestamp = message.timestamp
|
||||
// OpenIM 消息类型常量
|
||||
const val MESSAGE_TYPE_TEXT = 101
|
||||
const val MESSAGE_TYPE_IMAGE = 102
|
||||
const val MESSAGE_TYPE_AUDIO = 103
|
||||
const val MESSAGE_TYPE_VIDEO = 104
|
||||
const val MESSAGE_TYPE_FILE = 105
|
||||
|
||||
fun convertToChatItem(message: Message, context: Context, avatar: String? = null): ChatItem? {
|
||||
val timestamp = message.createTime
|
||||
val calendar = Calendar.getInstance()
|
||||
calendar.timeInMillis = timestamp * 1000
|
||||
val imageElm = message.imageElem?.imageList
|
||||
calendar.timeInMillis = timestamp
|
||||
|
||||
var faceAvatar = avatar
|
||||
if (faceAvatar == null) {
|
||||
faceAvatar = "${ConstVars.BASE_SERVER}${message.faceUrl}"
|
||||
faceAvatar = "${ConstVars.BASE_SERVER}${message.senderFaceUrl}"
|
||||
}
|
||||
when (message.elemType) {
|
||||
V2TIMMessage.V2TIM_ELEM_TYPE_IMAGE -> {
|
||||
val imageElm = message.imageElem?.imageList?.all {
|
||||
it.size == 0
|
||||
}
|
||||
if (imageElm != true) {
|
||||
|
||||
when (message.contentType) {
|
||||
MESSAGE_TYPE_IMAGE -> {
|
||||
val pictureElem = message.pictureElem
|
||||
if (pictureElem != null && !pictureElem.sourcePicture.url.isNullOrEmpty()) {
|
||||
return ChatItem(
|
||||
message = "Image",
|
||||
avatar = faceAvatar,
|
||||
time = calendar.time.formatChatTime(context),
|
||||
userId = message.sender,
|
||||
nickname = message.nickName,
|
||||
timestamp = timestamp * 1000,
|
||||
imageList = message.imageElem?.imageList
|
||||
?: emptyList<V2TIMImageElem.V2TIMImage>().toMutableList(),
|
||||
messageType = V2TIMMessage.V2TIM_ELEM_TYPE_IMAGE,
|
||||
userId = message.sendID,
|
||||
nickname = message.senderNickname ?: "",
|
||||
timestamp = timestamp,
|
||||
imageList = listOfNotNull(
|
||||
PictureInfo(
|
||||
url = pictureElem.sourcePicture.url ?: "",
|
||||
width = pictureElem.sourcePicture.width,
|
||||
height = pictureElem.sourcePicture.height,
|
||||
size = pictureElem.sourcePicture.size
|
||||
)
|
||||
).toMutableList(),
|
||||
messageType = MESSAGE_TYPE_IMAGE,
|
||||
textDisplay = "Image",
|
||||
msgId = message.msgID // Add this line to include msgId
|
||||
msgId = message.clientMsgID
|
||||
)
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
V2TIMMessage.V2TIM_ELEM_TYPE_TEXT -> {
|
||||
MESSAGE_TYPE_TEXT -> {
|
||||
return ChatItem(
|
||||
message = message.textElem?.text ?: "Unsupported message type",
|
||||
message = message.textElem?.content ?: "Unsupported message type",
|
||||
avatar = faceAvatar,
|
||||
time = calendar.time.formatChatTime(context),
|
||||
userId = message.sender,
|
||||
nickname = message.nickName,
|
||||
timestamp = timestamp * 1000,
|
||||
imageList = imageElm?.toMutableList()
|
||||
?: emptyList<V2TIMImageElem.V2TIMImage>().toMutableList(),
|
||||
messageType = V2TIMMessage.V2TIM_ELEM_TYPE_TEXT,
|
||||
textDisplay = message.textElem?.text ?: "Unsupported message type",
|
||||
msgId = message.msgID // Add this line to include msgId
|
||||
userId = message.sendID,
|
||||
nickname = message.senderNickname ?: "",
|
||||
timestamp = timestamp,
|
||||
imageList = emptyList<PictureInfo>().toMutableList(),
|
||||
messageType = MESSAGE_TYPE_TEXT,
|
||||
textDisplay = message.textElem?.content ?: "Unsupported message type",
|
||||
msgId = message.clientMsgID
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
return null
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// OpenIM 图片信息数据类
|
||||
data class PictureInfo(
|
||||
val url: String,
|
||||
val width: Int,
|
||||
val height: Int,
|
||||
val size: Long
|
||||
)
|
||||
|
||||
|
||||
data class ChatNotification(
|
||||
@SerializedName("userId")
|
||||
|
||||
Reference in New Issue
Block a user