Преобразование метода Rx Java в RxJava3 - PullRequest
0 голосов
/ 04 мая 2020

это метод, написанный на Rx Java

    public Observable<String> method() {
    return model.getOffers()
            .filter(new Func1<Offers, Boolean>() {
                @Override
                public Boolean call(Offers offers) {
                    if (offers == null)
                        return false;
                    return offers.hasSuperOffer();
                }
            })
            .flatMap(new Func1<Offers, Observable<Long>>() {
                @Override
                public Observable<Long> call(Offers offers) {
                    Long offerEndTime = offers.getRemainingTime();
                    if (offerEndTime == null) {
                        return Observable.empty();
                    }
                    AtomicLong remainingTimeSec;
                    Long currentTimeSec = System.currentTimeMillis() / 1000;
                    if (remainingTimeSec.get() == -1 && (offerEndTime > currentTimeSec)) {
                        remainingTimeSec.set(offerEndTime - currentTimeSec);
                    } else {
                        return Observable.empty();
                    }
                    return Observable.interval(1, TimeUnit.SECONDS)
                            .onBackpressureDrop()
                            .subscribeOn(Schedulers.io())
                            .observeOn(Schedulers.io())
                            .take(remainingTimeSec.intValue())
                            .doOnUnsubscribe(new Action0() {
                                @Override
                                public void call() {
                                }
                            })
                            .doOnCompleted(new Action0() {
                                @Override
                                public void call() {
                                }
                            })
                            .map(new Func1<Long, Long>() {
                                @Override
                                public Long call(Long elapsedTimeSec) {
                                    return remainingTimeSec.getAndDecrement();
                                }
                            });
                }
            })
            .map(new Func1<Long, String>() {
                @Override
                public String call(Long remainingTime) {
                    return DateUtils.getRemainingTimeStr(remainingTime);
                }
            });
}

Я пытаюсь преобразовать его в RxJava3, но некоторые параметры изменились: Func1 был изменен на Function Action0, изменен на Action

После внесения изменений в фильтре появляется следующая ошибка:

filter (io.reactivex.rxjava3.functions@io.reactivex.rxjava3.annotations.NonNull Predicate <? MyClass> in Observable cannot be applied to (anonymous.io.reactivex.rxjava3.functions.Function <MyClass.model.Offers.java.lang.Boolean>)

Кто-нибудь может мне помочь? Спасибо!

...