Better ViewState

This commit is contained in:
Benoit Marty 2021-11-22 17:18:11 +01:00
parent aee34ad552
commit e546587efb
3 changed files with 11 additions and 10 deletions

View File

@ -23,7 +23,6 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.iterator
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.activityViewModel
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel

View File

@ -100,8 +100,6 @@ class HomeDetailViewModel @AssistedInject constructor(
} }
} }
private var forceDialPad = false
private fun observeDataStore() { private fun observeDataStore() {
vectorDataStore.pushCounterFlow.setOnEach { nbOfPush -> vectorDataStore.pushCounterFlow.setOnEach { nbOfPush ->
copy( copy(
@ -109,10 +107,11 @@ class HomeDetailViewModel @AssistedInject constructor(
) )
} }
vectorDataStore.forceDialPadDisplayFlow.onEach { force -> vectorDataStore.forceDialPadDisplayFlow.setOnEach { force ->
forceDialPad = force copy(
updateShowDialPadTab() forceDialPadTab = force
}.launchIn(viewModelScope) )
}
} }
override fun handle(action: HomeDetailAction) { override fun handle(action: HomeDetailAction) {
@ -158,7 +157,7 @@ class HomeDetailViewModel @AssistedInject constructor(
private fun updateShowDialPadTab() { private fun updateShowDialPadTab() {
setState { setState {
copy(showDialPadTab = forceDialPad || callManager.supportsPSTNProtocol) copy(pstnSupportFlag = callManager.supportsPSTNProtocol)
} }
} }

View File

@ -42,8 +42,11 @@ data class HomeDetailViewState(
val syncState: SyncState = SyncState.Idle, val syncState: SyncState = SyncState.Idle,
val incrementalSyncStatus: SyncStatusService.Status.IncrementalSyncStatus = SyncStatusService.Status.IncrementalSyncIdle, val incrementalSyncStatus: SyncStatusService.Status.IncrementalSyncStatus = SyncStatusService.Status.IncrementalSyncIdle,
val pushCounter: Int = 0, val pushCounter: Int = 0,
val showDialPadTab: Boolean = false val pstnSupportFlag: Boolean = false,
) : MavericksState val forceDialPadTab: Boolean = false
) : MavericksState {
val showDialPadTab = forceDialPadTab || pstnSupportFlag
}
sealed class HomeTab(@StringRes val titleRes: Int) { sealed class HomeTab(@StringRes val titleRes: Int) {
data class RoomList(val displayMode: RoomListDisplayMode) : HomeTab(displayMode.titleRes) data class RoomList(val displayMode: RoomListDisplayMode) : HomeTab(displayMode.titleRes)