forked from GitHub-Mirror/riotX-android
Do not use execute{ }
This commit is contained in:
parent
ae38917a33
commit
c91a409258
@ -18,21 +18,22 @@ package im.vector.riotredesign.features.home
|
|||||||
|
|
||||||
import com.airbnb.mvrx.MvRxViewModelFactory
|
import com.airbnb.mvrx.MvRxViewModelFactory
|
||||||
import com.airbnb.mvrx.ViewModelContext
|
import com.airbnb.mvrx.ViewModelContext
|
||||||
import im.vector.matrix.android.api.session.Session
|
|
||||||
import im.vector.matrix.rx.rx
|
|
||||||
import im.vector.riotredesign.core.platform.VectorViewModel
|
import im.vector.riotredesign.core.platform.VectorViewModel
|
||||||
import org.koin.android.ext.android.get
|
import org.koin.android.ext.android.get
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View model used to update the home bottom bar notification counts
|
||||||
|
*/
|
||||||
class HomeDetailViewModel(initialState: HomeDetailViewState,
|
class HomeDetailViewModel(initialState: HomeDetailViewState,
|
||||||
private val session: Session)
|
private val homeRoomListStore: HomeRoomListObservableStore)
|
||||||
: VectorViewModel<HomeDetailViewState>(initialState) {
|
: VectorViewModel<HomeDetailViewState>(initialState) {
|
||||||
|
|
||||||
companion object : MvRxViewModelFactory<HomeDetailViewModel, HomeDetailViewState> {
|
companion object : MvRxViewModelFactory<HomeDetailViewModel, HomeDetailViewState> {
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
override fun create(viewModelContext: ViewModelContext, state: HomeDetailViewState): HomeDetailViewModel? {
|
override fun create(viewModelContext: ViewModelContext, state: HomeDetailViewState): HomeDetailViewModel? {
|
||||||
val currentSession = viewModelContext.activity.get<Session>()
|
val homeRoomListStore = viewModelContext.activity.get<HomeRoomListObservableStore>()
|
||||||
return HomeDetailViewModel(state, currentSession)
|
return HomeDetailViewModel(state, homeRoomListStore)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,13 +43,11 @@ class HomeDetailViewModel(initialState: HomeDetailViewState,
|
|||||||
|
|
||||||
// PRIVATE METHODS *****************************************************************************
|
// PRIVATE METHODS *****************************************************************************
|
||||||
|
|
||||||
// TODO Filter with selected group
|
|
||||||
private fun observeRoomSummaries() {
|
private fun observeRoomSummaries() {
|
||||||
session
|
homeRoomListStore
|
||||||
.rx()
|
.observe()
|
||||||
.liveRoomSummaries()
|
.subscribe { list ->
|
||||||
.execute { state ->
|
list.let { summaries ->
|
||||||
state.invoke()?.let { summaries ->
|
|
||||||
val peopleNotifications = summaries
|
val peopleNotifications = summaries
|
||||||
.filter { it.isDirect }
|
.filter { it.isDirect }
|
||||||
.map { it.notificationCount }
|
.map { it.notificationCount }
|
||||||
@ -65,6 +64,7 @@ class HomeDetailViewModel(initialState: HomeDetailViewState,
|
|||||||
.filter { !it.isDirect }
|
.filter { !it.isDirect }
|
||||||
.any { it.highlightCount > 0 }
|
.any { it.highlightCount > 0 }
|
||||||
|
|
||||||
|
setState {
|
||||||
copy(
|
copy(
|
||||||
notificationCountCatchup = peopleNotifications + roomsNotifications,
|
notificationCountCatchup = peopleNotifications + roomsNotifications,
|
||||||
notificationHighlightCatchup = peopleHasHighlight || roomsHasHighlight,
|
notificationHighlightCatchup = peopleHasHighlight || roomsHasHighlight,
|
||||||
@ -73,11 +73,10 @@ class HomeDetailViewModel(initialState: HomeDetailViewState,
|
|||||||
notificationCountRooms = roomsNotifications,
|
notificationCountRooms = roomsNotifications,
|
||||||
notificationHighlightRooms = roomsHasHighlight
|
notificationHighlightRooms = roomsHasHighlight
|
||||||
)
|
)
|
||||||
} ?: run {
|
|
||||||
// No change
|
|
||||||
copy()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.disposeOnClear()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -82,14 +82,15 @@ class RoomDirectoryViewModel(initialState: PublicRoomsViewState,
|
|||||||
session
|
session
|
||||||
.rx()
|
.rx()
|
||||||
.liveRoomSummaries()
|
.liveRoomSummaries()
|
||||||
.execute { async ->
|
.subscribe { list ->
|
||||||
val joinedRoomIds = async.invoke()
|
val joinedRoomIds = list
|
||||||
// Keep only joined room
|
// Keep only joined room
|
||||||
?.filter { it.membership == Membership.JOIN }
|
?.filter { it.membership == Membership.JOIN }
|
||||||
?.map { it.roomId }
|
?.map { it.roomId }
|
||||||
?.toList()
|
?.toList()
|
||||||
?: emptyList()
|
?: emptyList()
|
||||||
|
|
||||||
|
setState {
|
||||||
copy(
|
copy(
|
||||||
joinedRoomsIds = joinedRoomIds,
|
joinedRoomsIds = joinedRoomIds,
|
||||||
// Remove (newly) joined room id from the joining room list
|
// Remove (newly) joined room id from the joining room list
|
||||||
@ -99,6 +100,8 @@ class RoomDirectoryViewModel(initialState: PublicRoomsViewState,
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.disposeOnClear()
|
||||||
|
}
|
||||||
|
|
||||||
fun setRoomDirectoryData(roomDirectoryData: RoomDirectoryData) {
|
fun setRoomDirectoryData(roomDirectoryData: RoomDirectoryData) {
|
||||||
if (this.roomDirectoryData == roomDirectoryData) {
|
if (this.roomDirectoryData == roomDirectoryData) {
|
||||||
|
@ -49,24 +49,26 @@ class RoomPreviewViewModel(initialState: RoomPreviewViewState,
|
|||||||
session
|
session
|
||||||
.rx()
|
.rx()
|
||||||
.liveRoomSummaries()
|
.liveRoomSummaries()
|
||||||
.execute { async ->
|
.subscribe { list ->
|
||||||
val isRoomJoined = async.invoke()
|
withState { state ->
|
||||||
|
val isRoomJoined = list
|
||||||
// Keep only joined room
|
// Keep only joined room
|
||||||
?.filter { it.membership == Membership.JOIN }
|
?.filter { it.membership == Membership.JOIN }
|
||||||
?.map { it.roomId }
|
?.map { it.roomId }
|
||||||
?.toList()
|
?.toList()
|
||||||
?.contains(roomId) == true
|
?.contains(state.roomId) == true
|
||||||
|
|
||||||
if (isRoomJoined) {
|
if (isRoomJoined) {
|
||||||
|
setState {
|
||||||
copy(
|
copy(
|
||||||
roomJoinState = JoinState.JOINED
|
roomJoinState = JoinState.JOINED
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
// TODO No change...
|
|
||||||
copy()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
.disposeOnClear()
|
||||||
|
}
|
||||||
|
|
||||||
// TODO I should not have to do that
|
// TODO I should not have to do that
|
||||||
fun init(roomId: String) = withState {
|
fun init(roomId: String) = withState {
|
||||||
|
Loading…
Reference in New Issue
Block a user