I'm migrating my repository pattern to RxJava2. My old code look like
@Override
public Observable<List<Post>> getPost() {
return Observable.concat(mAppLocalDataStore.getPost(), mAppRemoteDataStore.getPost())
.first(new Func1<List<Post>, Boolean>() {
@Override
public Boolean call(List<Post> posts) {
return posts != null;
}
});
}
However, I don't know how to replace it in RxJava2, how to call posts.upToDate() with my current code?
@Override
public Observable<List<Post>> getPost() {
List<Post> list = new ArrayList<>();
return Observable.concat(mAppLocalDataStore.getPost(), mAppRemoteDataStore.getPost())
.first(list)
.toObservable();
}
Thank you @PhoenixWang for the hint. This is the solution.
@Override
public Observable<List<Post>> getPost() {
return Observable.concat(mAppLocalDataStore.getPost(), mAppRemoteDataStore.getPost())
.filter(new Predicate<List<Post>>() {
@Override
public boolean test(@NonNull List<Post> posts) throws Exception {
return isUpToDate(posts);
}
});
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With