package com.ittianyu.pocenter.features.home;
import com.ittianyu.pocenter.common.api.RemoteApi;
import com.ittianyu.pocenter.common.base.BaseApplication;
import com.ittianyu.pocenter.common.base.BasePresenter;
import com.ittianyu.pocenter.common.bean.ProjectBean;
import java.util.List;
import io.reactivex.functions.Consumer;
/**
* Created by yu on 2017/1/17.
*/
public class HomePresenter extends BasePresenter<HomeContract.View> implements HomeContract.Presenter {
private static final int COUNT = 20;
private int[] types;
public HomePresenter() {
loadTypes();
}
/**
* load user selected types from config
*/
private void loadTypes() {
// load types
types = BaseApplication.getRepertories().getTypes();
}
@Override
public void loadData(final boolean pullToRefresh) {
// if refresh data, update types first
if (pullToRefresh)
loadTypes();
application.getRepertories()
.getList(0, COUNT, types, RemoteApi.Status.RECRUITING, null, pullToRefresh)
.subscribe(new Consumer<List<ProjectBean>>() {
@Override
public void accept(List<ProjectBean> projectBeen) throws Exception {
getView().setData(projectBeen);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
getView().loadDataError(throwable, pullToRefresh);
}
});
}
@Override
public void loadMore(int start) {
application.getRepertories()
.getList(start, COUNT, types, RemoteApi.Status.RECRUITING, null, false)
.subscribe(new Consumer<List<ProjectBean>>() {
@Override
public void accept(List<ProjectBean> projectBeen) throws Exception {
getView().addData(projectBeen);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
getView().loadMoreError(throwable);
}
});
}
}