Fixed unecessary refresh in lists, causing blinking

This commit is contained in:
Sylvain Berfini 2022-06-01 12:55:31 +02:00
parent 5dfc18a78d
commit 6537e5fc23
4 changed files with 2 additions and 24 deletions

View file

@ -219,14 +219,6 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
adapter.submitList(chatRooms)
}
listViewModel.contactsUpdatedEvent.observe(
viewLifecycleOwner
) {
it.consume {
adapter.notifyItemRangeChanged(0, adapter.itemCount)
}
}
adapter.selectedChatRoomEvent.observe(
viewLifecycleOwner
) {

View file

@ -24,7 +24,6 @@ import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R
import org.linphone.activities.main.viewmodels.MessageNotifierViewModel
import org.linphone.compatibility.Compatibility
import org.linphone.contact.ContactsUpdatedListenerStub
import org.linphone.core.*
import org.linphone.core.tools.Log
import org.linphone.utils.Event
@ -33,10 +32,6 @@ import org.linphone.utils.LinphoneUtils
class ChatRoomsListViewModel : MessageNotifierViewModel() {
val chatRooms = MutableLiveData<ArrayList<ChatRoomViewModel>>()
val contactsUpdatedEvent: MutableLiveData<Event<Boolean>> by lazy {
MutableLiveData<Event<Boolean>>()
}
val fileSharingPending = MutableLiveData<Boolean>()
val textSharingPending = MutableLiveData<Boolean>()
@ -45,13 +40,6 @@ class ChatRoomsListViewModel : MessageNotifierViewModel() {
val groupChatAvailable: Boolean = LinphoneUtils.isGroupChatAvailable()
private val contactsUpdatedListener = object : ContactsUpdatedListenerStub() {
override fun onContactsUpdated() {
Log.i("[Chat Rooms] Contacts have changed")
contactsUpdatedEvent.value = Event(true)
}
}
private val listener: CoreListenerStub = object : CoreListenerStub() {
override fun onChatRoomStateChanged(core: Core, chatRoom: ChatRoom, state: ChatRoom.State) {
if (state == ChatRoom.State.Created) {
@ -102,12 +90,10 @@ class ChatRoomsListViewModel : MessageNotifierViewModel() {
init {
updateChatRooms()
coreContext.core.addListener(listener)
coreContext.contactsManager.addListener(contactsUpdatedListener)
}
override fun onCleared() {
chatRooms.value.orEmpty().forEach(ChatRoomViewModel::destroy)
coreContext.contactsManager.removeListener(contactsUpdatedListener)
coreContext.core.removeListener(listener)
super.onCleared()

View file

@ -136,6 +136,6 @@ private class ContactDiffCallback : DiffUtil.ItemCallback<ContactViewModel>() {
oldItem: ContactViewModel,
newItem: ContactViewModel
): Boolean {
return false // For headers
return true
}
}

View file

@ -152,6 +152,6 @@ private class CallLogDiffCallback : DiffUtil.ItemCallback<GroupedCallLogData>()
oldItem: GroupedCallLogData,
newItem: GroupedCallLogData
): Boolean {
return false // For headers
return oldItem.callLogs.size == newItem.callLogs.size
}
}