package com.dl7.mvp.module.manage.download.cache;
import com.dl7.downloaderlib.model.DownloadStatus;
import com.dl7.mvp.local.table.VideoInfo;
import com.dl7.mvp.local.table.VideoInfoDao;
import com.dl7.mvp.module.base.ILocalView;
import com.dl7.mvp.module.base.IRxBusPresenter;
import com.dl7.mvp.rxbus.RxBus;
import com.dl7.mvp.utils.ListUtils;
import com.orhanobut.logger.Logger;
import java.util.List;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.functions.Func1;
/**
* Created by long on 2016/12/16.
* video 缓存Presenter
*/
public class VideoCachePresenter implements IRxBusPresenter {
private final ILocalView mView;
private final VideoInfoDao mDbDao;
private final RxBus mRxBus;
public VideoCachePresenter(ILocalView view, VideoInfoDao dbDao, RxBus rxBus) {
mView = view;
mDbDao = dbDao;
mRxBus = rxBus;
}
@Override
public void getData(boolean isRefresh) {
mDbDao.queryBuilder().rx()
.oneByOne()
.filter(new Func1<VideoInfo, Boolean>() {
@Override
public Boolean call(VideoInfo info) {
// 判断是否存于下载中
return (info.getDownloadStatus() != DownloadStatus.NORMAL &&
info.getDownloadStatus() != DownloadStatus.COMPLETE);
}
})
.toList()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<List<VideoInfo>>() {
@Override
public void call(List<VideoInfo> videoList) {
if (ListUtils.isEmpty(videoList)) {
mView.noData();
} else {
mView.loadData(videoList);
}
}
});
}
@Override
public void getMoreData() {
}
@Override
public <T> void registerRxBus(Class<T> eventType, Action1<T> action) {
Subscription subscription = mRxBus.doSubscribe(eventType, action, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
Logger.e(throwable.toString());
}
});
mRxBus.addSubscription(this, subscription);
}
@Override
public void unregisterRxBus() {
mRxBus.unSubscribe(this);
}
}