Стратегии в LiveData. Реализуем MVVM

Хочу реализовать MVVM при помощи LivaData.

Есть экран Splash.

Состояние экрана

sealed class SplashState {
    object Loading : SplashState()
    object LoadingSuccess: SplashState()
    object Error: SplashState()
}

в ViewModel есть состояние

private val state: MutableLiveData<SplashState> = MutableLiveData(SplashState.Loading)

fun state() = state as LiveData<SplashState>

//некая операция
init {
    interactor.getData()
            .subscribe({
                state.value = SplashState.LoadingSuccess
            }, {
                state.value = SplashState.Error
            })
}

В Activity подписываюсь на состояние

splashViewModel.state().observe(this, Observer { 
            when (it){
                is SplashState.LoadingSuccess -> {
                    //бла бла прошел 
                }
                is SplashState.Error -> {
                    //открываем Toast ошибки
                }
            }
        })

Как выходить из ситуации когда Error нужно показывать только один раз? Например, произошла ошибка, показали Toast с ошибкой и больше эта ошибка не будет приходить пока не возникнет еще раз (т.е. если перевернули экран эта ошибка уже не придет).

p.s. Это абстрактный пример, в место Error может быть что то другое.


Ответы (0 шт):