use of butter.droid.provider.base.paging.Paging in project butter-android by butterproject.
the class TVOverviewPresenterImpl method loadProviderMedia.
private void loadProviderMedia(final int providerId) {
cancelMovieCall(providerId);
final butter.droid.provider.MediaProvider provider = providerManager.getMediaProvider(providerId);
provider.getDefaultSorter().flatMap(sorter -> {
Filter f;
if (sorter.isPresent()) {
f = new Filter(null, sorter.get());
} else {
f = new Filter(null, null);
}
return provider.items(f, new Pager(null));
}).flatMap(w -> Single.zip(Single.just(w.getPaging()), Observable.fromIterable(w.getMedia()).map(m -> new MediaWrapper(m, providerId)).toList(), Pair::create)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver<Pair<Paging, List<MediaWrapper>>>() {
@Override
public void onSubscribe(final Disposable d) {
listRequests.add(providerId, d);
}
@Override
public void onSuccess(final Pair<Paging, List<MediaWrapper>> items) {
List<MediaWrapper> mediaItems = items.second;
List<MediaCardItem> cardItems = convertMediaToOverview(mediaItems);
view.displayProviderData(providerId, cardItems);
if (selectedRow == 0) {
view.updateBackgroundImage(mediaItems.get(0).getMedia().getBackdrop());
}
}
@Override
public void onError(final Throwable e) {
view.showErrorMessage(R.string.movies_error);
}
});
}
use of butter.droid.provider.base.paging.Paging 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.Paging 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");
}
});
}
use of butter.droid.provider.base.paging.Paging in project butter-android by butterproject.
the class BaseMediaListPresenterImpl method loadNextPage.
@Override
public void loadNextPage(@Nullable String endCursor) {
cancelListCall();
if (items.isEmpty()) {
updateLoadingMessage(getLoadingMessage());
showLoading();
}
providerManager.getMediaProvider(providerId).items(filter, new Pager(endCursor)).flatMap(w -> Single.zip(Single.just(w.getPaging()), Observable.fromIterable(w.getMedia()).map(i -> new MediaWrapper(i, providerId)).toList(), Pair::create)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver<Pair<Paging, List<MediaWrapper>>>() {
@Override
public void onSubscribe(final Disposable d) {
listCall = d;
}
@Override
public void onSuccess(final Pair<Paging, List<MediaWrapper>> value) {
Paging paging = value.first;
view.addItems(value.second, !paging.hasNextPage(), paging.getEndCursor());
items.addAll(value.second);
showLoaded();
}
@Override
public void onError(final Throwable e) {
// TODO: 6/24/17 Most of this is not relevant any more
if (e.getMessage().equals("Canceled")) {
showLoaded();
} else if (e.getMessage() != null && e.getMessage().equals(ButterApplication.getAppContext().getString(R.string.movies_error))) {
view.addItems(null, false, null);
showLoaded();
} else {
Timber.e(e.getMessage());
view.showErrorMessage(R.string.unknown_error);
showLoaded();
}
}
});
}
Aggregations