更新聊天头像逻辑
This commit is contained in:
@@ -2,6 +2,7 @@ package com.aiosman.ravenow.entity
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.icu.util.Calendar
|
import android.icu.util.Calendar
|
||||||
|
import com.aiosman.ravenow.ConstVars
|
||||||
import com.aiosman.ravenow.exp.formatChatTime
|
import com.aiosman.ravenow.exp.formatChatTime
|
||||||
import com.google.gson.annotations.SerializedName
|
import com.google.gson.annotations.SerializedName
|
||||||
import com.tencent.imsdk.v2.V2TIMImageElem
|
import com.tencent.imsdk.v2.V2TIMImageElem
|
||||||
@@ -23,21 +24,15 @@ data class ChatItem(
|
|||||||
var showTimeDivider: Boolean = false
|
var showTimeDivider: Boolean = false
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
fun convertToChatItem(message: V2TIMMessage, context: Context): ChatItem? {
|
fun convertToChatItem(message: V2TIMMessage, context: Context,avatar: String? = null): 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 ?: ""
|
|
||||||
// }
|
|
||||||
val timestamp = message.timestamp
|
val timestamp = message.timestamp
|
||||||
val calendar = Calendar.getInstance()
|
val calendar = Calendar.getInstance()
|
||||||
calendar.timeInMillis = timestamp * 1000
|
calendar.timeInMillis = timestamp * 1000
|
||||||
val imageElm = message.imageElem?.imageList
|
val imageElm = message.imageElem?.imageList
|
||||||
|
var faceAvatar = avatar
|
||||||
|
if (faceAvatar == null) {
|
||||||
|
faceAvatar = "${ConstVars.BASE_SERVER}${message.faceUrl}"
|
||||||
|
}
|
||||||
when (message.elemType) {
|
when (message.elemType) {
|
||||||
V2TIMMessage.V2TIM_ELEM_TYPE_IMAGE -> {
|
V2TIMMessage.V2TIM_ELEM_TYPE_IMAGE -> {
|
||||||
val imageElm = message.imageElem?.imageList?.all {
|
val imageElm = message.imageElem?.imageList?.all {
|
||||||
@@ -46,7 +41,7 @@ data class ChatItem(
|
|||||||
if (imageElm != true) {
|
if (imageElm != true) {
|
||||||
return ChatItem(
|
return ChatItem(
|
||||||
message = "Image",
|
message = "Image",
|
||||||
avatar = message.faceUrl,
|
avatar = faceAvatar,
|
||||||
time = calendar.time.formatChatTime(context),
|
time = calendar.time.formatChatTime(context),
|
||||||
userId = message.sender,
|
userId = message.sender,
|
||||||
nickname = message.nickName,
|
nickname = message.nickName,
|
||||||
@@ -64,7 +59,7 @@ data class ChatItem(
|
|||||||
V2TIMMessage.V2TIM_ELEM_TYPE_TEXT -> {
|
V2TIMMessage.V2TIM_ELEM_TYPE_TEXT -> {
|
||||||
return ChatItem(
|
return ChatItem(
|
||||||
message = message.textElem?.text ?: "Unsupported message type",
|
message = message.textElem?.text ?: "Unsupported message type",
|
||||||
avatar = message.faceUrl,
|
avatar = faceAvatar,
|
||||||
time = calendar.time.formatChatTime(context),
|
time = calendar.time.formatChatTime(context),
|
||||||
userId = message.sender,
|
userId = message.sender,
|
||||||
nickname = message.nickName,
|
nickname = message.nickName,
|
||||||
|
|||||||
@@ -183,6 +183,14 @@ fun ChatScreen(userId: String) {
|
|||||||
AppColors.text)
|
AppColors.text)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.width(16.dp))
|
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(
|
||||||
text = viewModel.userProfile?.nickName ?: "",
|
text = viewModel.userProfile?.nickName ?: "",
|
||||||
modifier = Modifier.weight(1f),
|
modifier = Modifier.weight(1f),
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class ChatViewModel(
|
|||||||
override fun onRecvNewMessage(msg: V2TIMMessage?) {
|
override fun onRecvNewMessage(msg: V2TIMMessage?) {
|
||||||
super.onRecvNewMessage(msg)
|
super.onRecvNewMessage(msg)
|
||||||
msg?.let {
|
msg?.let {
|
||||||
val chatItem = ChatItem.convertToChatItem(msg, context)
|
val chatItem = ChatItem.convertToChatItem(msg, context, avatar = userProfile?.avatar)
|
||||||
chatItem?.let {
|
chatItem?.let {
|
||||||
chatData = listOf(it) + chatData
|
chatData = listOf(it) + chatData
|
||||||
goToNew = true
|
goToNew = true
|
||||||
@@ -109,7 +109,11 @@ class ChatViewModel(
|
|||||||
object : V2TIMValueCallback<List<V2TIMMessage>> {
|
object : V2TIMValueCallback<List<V2TIMMessage>> {
|
||||||
override fun onSuccess(p0: List<V2TIMMessage>?) {
|
override fun onSuccess(p0: List<V2TIMMessage>?) {
|
||||||
chatData = chatData + (p0 ?: emptyList()).map {
|
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()
|
}.filterNotNull()
|
||||||
if ((p0?.size ?: 0) < 20) {
|
if ((p0?.size ?: 0) < 20) {
|
||||||
hasMore = false
|
hasMore = false
|
||||||
@@ -143,7 +147,7 @@ class ChatViewModel(
|
|||||||
|
|
||||||
override fun onSuccess(p0: V2TIMMessage?) {
|
override fun onSuccess(p0: V2TIMMessage?) {
|
||||||
Log.d("ChatViewModel", "send message success")
|
Log.d("ChatViewModel", "send message success")
|
||||||
val chatItem = ChatItem.convertToChatItem(p0!!, context)
|
val chatItem = ChatItem.convertToChatItem(p0!!, context, avatar = myProfile?.avatar)
|
||||||
chatItem?.let {
|
chatItem?.let {
|
||||||
chatData = listOf(it) + chatData
|
chatData = listOf(it) + chatData
|
||||||
goToNew = true
|
goToNew = true
|
||||||
@@ -176,7 +180,7 @@ class ChatViewModel(
|
|||||||
|
|
||||||
override fun onSuccess(p0: V2TIMMessage?) {
|
override fun onSuccess(p0: V2TIMMessage?) {
|
||||||
Log.d("ChatViewModel", "send image message success")
|
Log.d("ChatViewModel", "send image message success")
|
||||||
val chatItem = ChatItem.convertToChatItem(p0!!, context)
|
val chatItem = ChatItem.convertToChatItem(p0!!, context, avatar = myProfile?.avatar)
|
||||||
chatItem?.let {
|
chatItem?.let {
|
||||||
chatData = listOf(it) + chatData
|
chatData = listOf(it) + chatData
|
||||||
goToNew = true
|
goToNew = true
|
||||||
@@ -227,7 +231,11 @@ class ChatViewModel(
|
|||||||
object : V2TIMValueCallback<List<V2TIMMessage>> {
|
object : V2TIMValueCallback<List<V2TIMMessage>> {
|
||||||
override fun onSuccess(p0: List<V2TIMMessage>?) {
|
override fun onSuccess(p0: List<V2TIMMessage>?) {
|
||||||
chatData = (p0 ?: emptyList()).mapNotNull {
|
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) {
|
if ((p0?.size ?: 0) < 20) {
|
||||||
hasMore = false
|
hasMore = false
|
||||||
|
|||||||
@@ -12,12 +12,13 @@ import androidx.navigation.NavHostController
|
|||||||
import androidx.paging.PagingData
|
import androidx.paging.PagingData
|
||||||
import androidx.paging.map
|
import androidx.paging.map
|
||||||
import com.aiosman.ravenow.AppState
|
import com.aiosman.ravenow.AppState
|
||||||
|
import com.aiosman.ravenow.ConstVars
|
||||||
import com.aiosman.ravenow.data.AccountNotice
|
import com.aiosman.ravenow.data.AccountNotice
|
||||||
import com.aiosman.ravenow.data.AccountService
|
import com.aiosman.ravenow.data.AccountService
|
||||||
import com.aiosman.ravenow.entity.CommentEntity
|
|
||||||
import com.aiosman.ravenow.data.AccountServiceImpl
|
import com.aiosman.ravenow.data.AccountServiceImpl
|
||||||
import com.aiosman.ravenow.data.UserService
|
import com.aiosman.ravenow.data.UserService
|
||||||
import com.aiosman.ravenow.data.UserServiceImpl
|
import com.aiosman.ravenow.data.UserServiceImpl
|
||||||
|
import com.aiosman.ravenow.entity.CommentEntity
|
||||||
import com.aiosman.ravenow.exp.formatChatTime
|
import com.aiosman.ravenow.exp.formatChatTime
|
||||||
import com.aiosman.ravenow.ui.NavigationRoute
|
import com.aiosman.ravenow.ui.NavigationRoute
|
||||||
import com.aiosman.ravenow.ui.navigateToChat
|
import com.aiosman.ravenow.ui.navigateToChat
|
||||||
@@ -63,7 +64,7 @@ data class Conversation(
|
|||||||
nickname = msg.showName,
|
nickname = msg.showName,
|
||||||
lastMessage = msg.lastMessage?.textElem?.text ?: "",
|
lastMessage = msg.lastMessage?.textElem?.text ?: "",
|
||||||
lastMessageTime = lastMessage.time.formatChatTime(context),
|
lastMessageTime = lastMessage.time.formatChatTime(context),
|
||||||
avatar = msg.faceUrl,
|
avatar = "${ConstVars.BASE_SERVER}${msg.faceUrl}",
|
||||||
unreadCount = msg.unreadCount,
|
unreadCount = msg.unreadCount,
|
||||||
trtcUserId = msg.userID,
|
trtcUserId = msg.userID,
|
||||||
displayText = displayText,
|
displayText = displayText,
|
||||||
|
|||||||
Reference in New Issue
Block a user