Как обновить параметры наблюдаемого внутри при попытке - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь реализовать функцию autoLogin с повтором, когда и нужно изменить параметры предыдущей наблюдаемой после автоматического входа в систему.

Итак, я создал функцию

class TestClass(): Function<Flowable<out Throwable>, Flowable<*>> {
    override fun apply(flowable: Flowable<out Throwable>): Flowable<*> {
        return flowable
                .flatMap {
                    if (it is HttpException && it.code() == 401 ) {
                        Timber.d("apply: Doing AutoLogin.")
                        dataSource
                                .login(document, password)
                                .map {
                                    //Auto login done, update user
                                }
                                .doOnError({ 
                                    // login failed
                                })
                                .toFlowable()
                    } else {
                        Flowable.error(it)
                    }
                }
    }
}

И примените это так:

dataSource.apiCall(user)            
            .retryWhen(TestClass())
            .subscribe()

Пробовал тоже так:

    Single.defer { 
                dataSource.apiCall(user)            
                    .retryWhen(TestClass())
            }
            .subscribe()

}

Проблема в том, что после входа в систему при повторной попытке запроса пользователь не обновляется.

Что я делаю не так?

...