Я получаю эту проблему Type mismatch: inferred type is (Pair<Throwable, Boolean>) -> Unit but ((Pair<Throwable, Boolean>) -> Publisher<out (???..???)>!)! was expected
Вот мой код
return RetrofitService.api.getdata(
authToken,
offset,
limit
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.retryWhen { t ->
t.zipWith(Flowable.range(1, 3),
object : BiFunction<Throwable, Int, Pair<Throwable, Boolean>> {
override fun apply(t1: Throwable, t2: Int): Pair<Throwable, Boolean> {
if (t2 < 3 && t1 is HttpException && t1.code==401) {
return Pair(t1 as HttpException, true)
}
return Pair(t1 as HttpException, false)
}
}).flatMap { t ->
if (t.second) {
// refresh access_token with refresh_token
Repository.login(loginModel)
.map {
SharedPreferenceHelper.setAccessToken(it.accessToken)
SharedPreferenceHelper.setRefreshToken(it.refreshToken)
}.subscribe({
}, {
})
return@flatMap
} else {
Single.error<Any>(t.first)
}
}
}
Я пытаюсь вызвать getData api, и всякий раз, когда возникает ошибка для "401 token expire", я обновить access_token и повторить попытку. Что я должен вернуть, чтобы плоская карта получила правильные данные. `