RxJava2 Текучая пара и проблема плоской карты - PullRequest
0 голосов
/ 24 февраля 2020

Я получаю эту проблему 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 и повторить попытку. Что я должен вернуть, чтобы плоская карта получила правильные данные. `

...