Improved a bit chat room diff callback

This commit is contained in:
Sylvain Berfini 2022-06-09 14:54:59 +02:00
parent cbacb97f9d
commit 5fac97b55d
2 changed files with 8 additions and 2 deletions

View file

@ -33,6 +33,7 @@ import org.linphone.activities.main.viewmodels.ListTopBarViewModel
import org.linphone.core.ChatRoom import org.linphone.core.ChatRoom
import org.linphone.databinding.ChatRoomListCellBinding import org.linphone.databinding.ChatRoomListCellBinding
import org.linphone.utils.Event import org.linphone.utils.Event
import org.linphone.utils.LinphoneUtils
class ChatRoomsListAdapter( class ChatRoomsListAdapter(
selectionVM: ListTopBarViewModel, selectionVM: ListTopBarViewModel,
@ -108,13 +109,13 @@ private class ChatRoomDiffCallback : DiffUtil.ItemCallback<ChatRoomViewModel>()
oldItem: ChatRoomViewModel, oldItem: ChatRoomViewModel,
newItem: ChatRoomViewModel newItem: ChatRoomViewModel
): Boolean { ): Boolean {
return oldItem.chatRoom == newItem.chatRoom return LinphoneUtils.areChatRoomsTheSame(oldItem.chatRoom, newItem.chatRoom)
} }
override fun areContentsTheSame( override fun areContentsTheSame(
oldItem: ChatRoomViewModel, oldItem: ChatRoomViewModel,
newItem: ChatRoomViewModel newItem: ChatRoomViewModel
): Boolean { ): Boolean {
return false // To force redraw when contacts are updated return true
} }
} }

View file

@ -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 { fun getChatRoomId(localAddress: Address, remoteAddress: Address): String {
val localSipUri = localAddress.clone() val localSipUri = localAddress.clone()
localSipUri.clean() localSipUri.clean()