Room list : add some throttle to avoid refreshing too often.

This commit is contained in:
ganfra 2019-01-31 12:13:51 +01:00
parent 6c653287e1
commit 020a2f3923
1 changed files with 3 additions and 2 deletions

View File

@ -33,6 +33,7 @@ import io.reactivex.Observable
import io.reactivex.functions.Function3 import io.reactivex.functions.Function3
import io.reactivex.rxkotlin.subscribeBy import io.reactivex.rxkotlin.subscribeBy
import org.koin.android.ext.android.get import org.koin.android.ext.android.get
import java.util.concurrent.TimeUnit


typealias RoomListFilterName = CharSequence typealias RoomListFilterName = CharSequence


@ -95,9 +96,9 @@ class RoomListViewModel(initialState: RoomListViewState,


private fun observeRoomSummaries() { private fun observeRoomSummaries() {
Observable.combineLatest<List<RoomSummary>, Option<GroupSummary>, Option<RoomListFilterName>, RoomSummaries>( Observable.combineLatest<List<RoomSummary>, Option<GroupSummary>, Option<RoomListFilterName>, RoomSummaries>(
session.rx().liveRoomSummaries(), session.rx().liveRoomSummaries().throttleLast(300, TimeUnit.MILLISECONDS),
selectedGroupHolder.selectedGroup(), selectedGroupHolder.selectedGroup(),
roomListFilter, roomListFilter.throttleLast(300, TimeUnit.MILLISECONDS),
Function3 { rooms, selectedGroupOption, filterRoomOption -> Function3 { rooms, selectedGroupOption, filterRoomOption ->
val filteredRooms = filterRooms(rooms, filterRoomOption) val filteredRooms = filterRooms(rooms, filterRoomOption)
val selectedGroup = selectedGroupOption.orNull() val selectedGroup = selectedGroupOption.orNull()