Как новичок, я не уверен в этом решении. Но это работает. Так что, если это плохо, пожалуйста, прокомментируйте, чтобы сказать, почему и предоставьте альтернативу.
Используйте это:
data class DataWithStates<T>(
val data: T? = null,
val states: Throwable? = null
)
Образец для ViewModel:
fun getUsers(): LiveData<DataWithStates<List<User>>> {
return LiveDataReactiveStreams.fromPublisher(
userRepository
.getAll()
.map { lstUser -> DataWithStates(lstUser) }
.onErrorReturn { ex -> DataWithStates(states = ex) }
.toFlowable(BackpressureStrategy.LATEST))
}
Может быть, лучше переместить .map и .onErrorReturn в хранилище.
Редактировать: в качестве альтернативы вы можете использовать лямбду для прослушивания ошибок.
fun getUsers(onError: () -> Unit = {}): LiveData<List<User>> {
return LiveDataReactiveStreams.fromPublisher(
userRepository
.getAll()
.doOnError { onError() }
.toFlowable(BackpressureStrategy.LATEST))
}