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
1 changed files with 5 additions and 9 deletions

View File

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