package com.zcy.ghost.vivideo.presenter; import android.support.annotation.NonNull; import com.zcy.ghost.vivideo.base.RxPresenter; import com.zcy.ghost.vivideo.model.bean.VideoRes; import com.zcy.ghost.vivideo.model.net.RetrofitHelper; import com.zcy.ghost.vivideo.model.net.VideoHttpResponse; import com.zcy.ghost.vivideo.presenter.contract.DiscoverContract; import com.zcy.ghost.vivideo.utils.Preconditions; import com.zcy.ghost.vivideo.utils.RxUtil; import com.zcy.ghost.vivideo.utils.StringUtils; import com.zcy.ghost.vivideo.utils.SystemUtils; import rx.Subscription; import rx.functions.Action0; import rx.functions.Action1; /** * Description: DiscoverPresenter * Creator: yxc * date: 2016/9/21 17:55 */ public class DiscoverPresenter extends RxPresenter implements DiscoverContract.Presenter { DiscoverContract.View mView; final String catalogId = "402834815584e463015584e53843000b"; int max = 90; int min = 1; public DiscoverPresenter(@NonNull DiscoverContract.View threeView) { mView = Preconditions.checkNotNull(threeView); mView.setPresenter(this); } @Override public void getData() { getNextVideos(); } private void getNextVideos() { Subscription rxSubscription = RetrofitHelper.getVideoApi().getVideoList(catalogId, getNextPage() + "") .compose(RxUtil.<VideoHttpResponse<VideoRes>>rxSchedulerHelper()) .compose(RxUtil.<VideoRes>handleResult()) .subscribe(new Action1<VideoRes>() { @Override public void call(final VideoRes res) { if (res != null) { if (mView.isActive()) { mView.showContent(res); } } } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { mView.refreshFaild(StringUtils.getErrorMsg(throwable.getMessage())); } }, new Action0() { @Override public void call() { if (mView.isActive()) mView.hidLoading(); } } ); addSubscribe(rxSubscription); } private int getNextPage() { int page = mView.getLastPage(); if (SystemUtils.isNetworkConnected()) { page = StringUtils.getRandomNumber(min, max); mView.setLastPage(page); } return page; } }