package io.hefuyi.listener.mvp.presenter;
import java.util.List;
import io.hefuyi.listener.mvp.contract.FoldersContract;
import io.hefuyi.listener.mvp.model.FolderInfo;
import io.hefuyi.listener.mvp.usecase.GetFolders;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
import rx.subscriptions.CompositeSubscription;
/**
* Created by hefuyi on 2016/12/11.
*/
public class FolderPresenter implements FoldersContract.Presenter{
private GetFolders mUsecase;
private FoldersContract.View mView;
private CompositeSubscription mCompositeSubscription;
public FolderPresenter(GetFolders getFolders) {
this.mUsecase = getFolders;
}
@Override
public void attachView(FoldersContract.View view) {
this.mView = view;
mCompositeSubscription = new CompositeSubscription();
}
@Override
public void subscribe() {
loadFolders();
}
@Override
public void unsubscribe() {
mCompositeSubscription.clear();
}
@Override
public void loadFolders() {
mCompositeSubscription.clear();
Subscription subscription = mUsecase.execute(new GetFolders.RequestValues())
.getFolderList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<List<FolderInfo>>() {
@Override
public void call(List<FolderInfo> folderInfos) {
if (folderInfos == null || folderInfos.size() == 0) {
mView.showEmptyView();
} else {
mView.showFolders(folderInfos);
}
}
});
mCompositeSubscription.add(subscription);
}
}