diff --git a/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatRoomsListAdapter.kt b/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatRoomsListAdapter.kt index 03afb4da8..cbdaf3f38 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatRoomsListAdapter.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatRoomsListAdapter.kt @@ -33,6 +33,7 @@ import org.linphone.activities.main.viewmodels.ListTopBarViewModel import org.linphone.core.ChatRoom import org.linphone.databinding.ChatRoomListCellBinding import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils class ChatRoomsListAdapter( selectionVM: ListTopBarViewModel, @@ -108,13 +109,13 @@ private class ChatRoomDiffCallback : DiffUtil.ItemCallback() oldItem: ChatRoomViewModel, newItem: ChatRoomViewModel ): Boolean { - return oldItem.chatRoom == newItem.chatRoom + return LinphoneUtils.areChatRoomsTheSame(oldItem.chatRoom, newItem.chatRoom) } override fun areContentsTheSame( oldItem: ChatRoomViewModel, newItem: ChatRoomViewModel ): Boolean { - return false // To force redraw when contacts are updated + return true } } diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index c1cfc2ef3..ab603751a 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -210,6 +210,11 @@ class LinphoneUtils { ) } + fun areChatRoomsTheSame(chatRoom1: ChatRoom, chatRoom2: ChatRoom): Boolean { + return chatRoom1.localAddress.weakEqual(chatRoom2.localAddress) && + chatRoom1.peerAddress.weakEqual(chatRoom2.peerAddress) + } + fun getChatRoomId(localAddress: Address, remoteAddress: Address): String { val localSipUri = localAddress.clone() localSipUri.clean()