diff --git a/app/src/main/java/com/aiosman/ravenow/entity/Chat.kt b/app/src/main/java/com/aiosman/ravenow/entity/Chat.kt index 0f4bfe7..cff2165 100644 --- a/app/src/main/java/com/aiosman/ravenow/entity/Chat.kt +++ b/app/src/main/java/com/aiosman/ravenow/entity/Chat.kt @@ -2,6 +2,7 @@ package com.aiosman.ravenow.entity import android.content.Context 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 @@ -23,21 +24,15 @@ data class ChatItem( var showTimeDivider: Boolean = false ) { companion object { - fun convertToChatItem(message: V2TIMMessage, context: Context): ChatItem? { -// val avatar = if (message.sender == userProfile?.trtcUserId) { -// userProfile?.avatar ?: "" -// } else { -// myProfile?.avatar ?: "" -// } -// val nickname = if (message.sender == userProfile?.trtcUserId) { -// userProfile?.nickName ?: "" -// } else { -// myProfile?.nickName ?: "" -// } + fun convertToChatItem(message: V2TIMMessage, context: Context,avatar: String? = null): ChatItem? { val timestamp = message.timestamp val calendar = Calendar.getInstance() calendar.timeInMillis = timestamp * 1000 val imageElm = message.imageElem?.imageList + var faceAvatar = avatar + if (faceAvatar == null) { + faceAvatar = "${ConstVars.BASE_SERVER}${message.faceUrl}" + } when (message.elemType) { V2TIMMessage.V2TIM_ELEM_TYPE_IMAGE -> { val imageElm = message.imageElem?.imageList?.all { @@ -46,7 +41,7 @@ data class ChatItem( if (imageElm != true) { return ChatItem( message = "Image", - avatar = message.faceUrl, + avatar = faceAvatar, time = calendar.time.formatChatTime(context), userId = message.sender, nickname = message.nickName, @@ -64,7 +59,7 @@ data class ChatItem( V2TIMMessage.V2TIM_ELEM_TYPE_TEXT -> { return ChatItem( message = message.textElem?.text ?: "Unsupported message type", - avatar = message.faceUrl, + avatar = faceAvatar, time = calendar.time.formatChatTime(context), userId = message.sender, nickname = message.nickName, diff --git a/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatScreen.kt b/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatScreen.kt index 662a16f..7c39cdf 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatScreen.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatScreen.kt @@ -183,6 +183,14 @@ fun ChatScreen(userId: String) { AppColors.text) ) Spacer(modifier = Modifier.width(16.dp)) + CustomAsyncImage( + imageUrl = viewModel.userProfile?.avatar ?: "", + modifier = Modifier + .size(40.dp) + .clip(RoundedCornerShape(40.dp)), + contentDescription = "avatar" + ) + Spacer(modifier = Modifier.width(8.dp)) Text( text = viewModel.userProfile?.nickName ?: "", modifier = Modifier.weight(1f), diff --git a/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatViewModel.kt b/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatViewModel.kt index 0a9cb42..e8ecf7e 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatViewModel.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/chat/ChatViewModel.kt @@ -66,7 +66,7 @@ class ChatViewModel( override fun onRecvNewMessage(msg: V2TIMMessage?) { super.onRecvNewMessage(msg) msg?.let { - val chatItem = ChatItem.convertToChatItem(msg, context) + val chatItem = ChatItem.convertToChatItem(msg, context, avatar = userProfile?.avatar) chatItem?.let { chatData = listOf(it) + chatData goToNew = true @@ -109,7 +109,11 @@ class ChatViewModel( object : V2TIMValueCallback> { override fun onSuccess(p0: List?) { chatData = chatData + (p0 ?: emptyList()).map { - ChatItem.convertToChatItem(it, context) + var avatar = userProfile?.avatar + if (it.isSelf) { + avatar = myProfile?.avatar + } + ChatItem.convertToChatItem(it, context,avatar) }.filterNotNull() if ((p0?.size ?: 0) < 20) { hasMore = false @@ -143,7 +147,7 @@ class ChatViewModel( override fun onSuccess(p0: V2TIMMessage?) { Log.d("ChatViewModel", "send message success") - val chatItem = ChatItem.convertToChatItem(p0!!, context) + val chatItem = ChatItem.convertToChatItem(p0!!, context, avatar = myProfile?.avatar) chatItem?.let { chatData = listOf(it) + chatData goToNew = true @@ -176,7 +180,7 @@ class ChatViewModel( override fun onSuccess(p0: V2TIMMessage?) { Log.d("ChatViewModel", "send image message success") - val chatItem = ChatItem.convertToChatItem(p0!!, context) + val chatItem = ChatItem.convertToChatItem(p0!!, context, avatar = myProfile?.avatar) chatItem?.let { chatData = listOf(it) + chatData goToNew = true @@ -227,7 +231,11 @@ class ChatViewModel( object : V2TIMValueCallback> { override fun onSuccess(p0: List?) { chatData = (p0 ?: emptyList()).mapNotNull { - ChatItem.convertToChatItem(it, context) + var avatar = userProfile?.avatar + if (it.isSelf) { + avatar = myProfile?.avatar + } + ChatItem.convertToChatItem(it, context,avatar) } if ((p0?.size ?: 0) < 20) { hasMore = false diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/MessageListViewModel.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/MessageListViewModel.kt index df6f393..d7d7062 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/MessageListViewModel.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/MessageListViewModel.kt @@ -12,12 +12,13 @@ import androidx.navigation.NavHostController import androidx.paging.PagingData import androidx.paging.map import com.aiosman.ravenow.AppState +import com.aiosman.ravenow.ConstVars import com.aiosman.ravenow.data.AccountNotice import com.aiosman.ravenow.data.AccountService -import com.aiosman.ravenow.entity.CommentEntity import com.aiosman.ravenow.data.AccountServiceImpl import com.aiosman.ravenow.data.UserService import com.aiosman.ravenow.data.UserServiceImpl +import com.aiosman.ravenow.entity.CommentEntity import com.aiosman.ravenow.exp.formatChatTime import com.aiosman.ravenow.ui.NavigationRoute import com.aiosman.ravenow.ui.navigateToChat @@ -63,7 +64,7 @@ data class Conversation( nickname = msg.showName, lastMessage = msg.lastMessage?.textElem?.text ?: "", lastMessageTime = lastMessage.time.formatChatTime(context), - avatar = msg.faceUrl, + avatar = "${ConstVars.BASE_SERVER}${msg.faceUrl}", unreadCount = msg.unreadCount, trtcUserId = msg.userID, displayText = displayText,