У меня возникла очень необычная проблема, когда LiveDataScope не выдает мое исключение, запущенное в моем хранилище. Проблема заключается в том, что если вместо emit я помещаю событие livingata, оно отправляется наблюдателю, однако с помощью emit оно не запускает событие для него.
ViewModel:
fun launchJob(makeThis: suspend LiveDataScope<ViewState>.() -> Unit): LiveData<ViewState> =
liveData {
viewModelScope.launch {
emitLoad()
try {
makeThis(this@liveData)
} catch (error: Error){
//its work
showErrorEvent.value = Pair(error, true)
// not work
emit(ViewState.Error(error))
}
}
}
viewmodel implementation
/**
* Método responsável por realizar o método de reset de senha.
* */
fun requestReset() = launchJob {
emitSucess(shippingMethodRepository.resetPassword(method))
}
базовый репозиторий
suspend fun getAsyncData(params: P): T {
try {
return api.invoke(params)
} catch (error: Exception) {
error.printStackTrace()
throw error
}
}
Как я уже упоминал, при изменении emit на другие liveata, это наблюдается по активности и любому коду перед этим. Излучение читается так же, как и Log, et c.