use of butter.droid.provider.base.paging.ItemsWrapper in project butter-android by butterproject.
the class VodoProvider method items.
@NonNull
@Override
public Single<ItemsWrapper> items(@Nullable final Filter filter, @Nullable Pager pager) {
String query = null;
String genre = null;
String sorter = null;
if (filter != null) {
if (filter.getGenre() != null) {
genre = filter.getGenre().getKey();
}
if (filter.getSorter() != null) {
sorter = filter.getSorter().getKey();
}
query = filter.getQuery();
}
final int page;
if (pager != null && pager.getEndCursor() != null) {
page = Integer.parseInt(pager.getEndCursor());
} else {
page = 0;
}
return vodoService.fetchMovies(query, genre, sorter, null, null, ITEMS_PER_PAGE, page).map(VodoResponse::getDownloads).flatMapObservable(Observable::fromArray).map(this::mapVodoMovie).cast(Media.class).toList().map(m -> new ItemsWrapper(m, new Paging(String.valueOf(page + 1), m.size() == ITEMS_PER_PAGE)));
}
use of butter.droid.provider.base.paging.ItemsWrapper in project butter-android by butterproject.
the class TVMediaGridPresenterImpl method loadItems.
private void loadItems(@Nullable String endCursor) {
cancelCurrentCall();
providerManager.getMediaProvider(providerId).items(filter, new Pager(endCursor)).flatMap(i -> Single.zip(Single.just(i).map(ItemsWrapper::getMedia).flatMapObservable(Observable::fromIterable).map(media -> new MediaWrapper(media, providerId)).map(MediaCardItem::new).toList(), Single.just(i).map(ItemsWrapper::getPaging), Pair::create)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver<Pair<List<MediaCardItem>, Paging>>() {
@Override
public void onSubscribe(final Disposable d) {
currentCall = d;
}
@Override
public void onSuccess(final Pair<List<MediaCardItem>, Paging> value) {
view.appendItems(value.first, !value.second.hasNextPage(), value.second.getEndCursor());
}
@Override
public void onError(final Throwable e) {
view.displayError("Error getting show list");
}
});
}
Aggregations