У меня есть следующая функция преобразования:
private MutableLiveData<ApiError> apiError = new MutableLiveData<>();
private MutableLiveData<ApiProgress> apiProgress = new MutableLiveData<>();
private CompositeDisposable compositeDisposable = new CompositeDisposable();
// Emit "progress's start" on subscribe and "progress's end" on after success or error.
// Add this to the observable action sequence with ".compose(baseTransformer())" before subscribe.
<T> SingleTransformer<T, T> baseTransformer() {
return upstream -> upstream
.doOnSubscribe(disposable -> {
compositeDisposable.add(disposable);
apiProgress.setValue(ApiProgress.start());
})
.doFinally(() -> apiProgress.setValue(ApiProgress.stop()))
.doOnError(err -> {
apiError.setValue(ApiError.create(err));
});
}
, и я использую эту функцию здесь:
authRepository.login(userName, password)
.compose(baseTransformer())
.subscribe(login -> {
loginData.setValue(login);
});
Проблема: Мое приложение падает при попыткеавторизоваться. Решение
authRepository.login(userName, password)
.compose(baseTransformer())
.subscribe(login -> {
loginData.setValue(login);
}, err -> {});
Я не знаю, почему это решает проблему, поскольку "doOnError" не должен зависеть от этой лямбды ("err -> {}") для отлова ошибки.
Пожалуйста, предложите любую альтернативу.