fixing bug when room list is not updated being on background (#7278)

This commit is contained in:
Nikita Fedrunov 2022-10-04 11:29:34 +02:00 committed by GitHub
parent 8e3b9735c1
commit 8eea2ef923
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,7 +18,7 @@ package im.vector.app.features.home.room.list.home
import android.widget.ImageView import android.widget.ImageView
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.paging.PagedList import androidx.paging.PagedList
import arrow.core.toOption import arrow.core.toOption
@ -93,7 +93,7 @@ class HomeRoomListViewModel @AssistedInject constructor(
.setEnablePlaceholders(true) .setEnablePlaceholders(true)
.build() .build()
private val _roomsLivePagedList = MediatorLiveData<PagedList<RoomSummary>>() private val _roomsLivePagedList = MutableLiveData<PagedList<RoomSummary>>()
val roomsLivePagedList: LiveData<PagedList<RoomSummary>> = _roomsLivePagedList val roomsLivePagedList: LiveData<PagedList<RoomSummary>> = _roomsLivePagedList
private val internalPagedListObserver = Observer<PagedList<RoomSummary>> { private val internalPagedListObserver = Observer<PagedList<RoomSummary>> {
@ -240,9 +240,7 @@ class HomeRoomListViewModel @AssistedInject constructor(
} }
private fun observeRooms(currentFilter: HomeRoomFilter, isAZOrdering: Boolean) { private fun observeRooms(currentFilter: HomeRoomFilter, isAZOrdering: Boolean) {
filteredPagedRoomSummariesLive?.livePagedList?.let { livePagedList -> filteredPagedRoomSummariesLive?.livePagedList?.removeObserver(internalPagedListObserver)
_roomsLivePagedList.removeSource(livePagedList)
}
val builder = RoomSummaryQueryParams.Builder().also { val builder = RoomSummaryQueryParams.Builder().also {
it.memberships = listOf(Membership.JOIN) it.memberships = listOf(Membership.JOIN)
it.spaceFilter = spaceStateHandler.getCurrentSpace()?.roomId.toActiveSpaceOrNoFilter() it.spaceFilter = spaceStateHandler.getCurrentSpace()?.roomId.toActiveSpaceOrNoFilter()
@ -260,7 +258,7 @@ class HomeRoomListViewModel @AssistedInject constructor(
).also { ).also {
filteredPagedRoomSummariesLive = it filteredPagedRoomSummariesLive = it
} }
_roomsLivePagedList.addSource(liveResults.livePagedList, internalPagedListObserver) liveResults.livePagedList.observeForever(internalPagedListObserver)
} }
private fun observeOrderPreferences() { private fun observeOrderPreferences() {
@ -343,9 +341,7 @@ class HomeRoomListViewModel @AssistedInject constructor(
} }
override fun onCleared() { override fun onCleared() {
filteredPagedRoomSummariesLive?.livePagedList?.let { livePagedList -> filteredPagedRoomSummariesLive?.livePagedList?.removeObserver(internalPagedListObserver)
_roomsLivePagedList.removeSource(livePagedList)
}
super.onCleared() super.onCleared()
} }