package com.codeest.geeknews.presenter.vtex;
import com.codeest.geeknews.base.RxPresenter;
import com.codeest.geeknews.model.DataManager;
import com.codeest.geeknews.model.bean.NodeListBean;
import com.codeest.geeknews.model.bean.RealmLikeBean;
import com.codeest.geeknews.model.bean.RepliesListBean;
import com.codeest.geeknews.base.contract.vtex.RepliesContract;
import com.codeest.geeknews.util.RxUtil;
import com.codeest.geeknews.widget.CommonSubscriber;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.annotations.NonNull;
import io.reactivex.functions.Function;
import io.reactivex.functions.Predicate;
/**
* Created by codeest on 16/12/23.
*/
public class RepliesPresenter extends RxPresenter<RepliesContract.View> implements RepliesContract.Presenter{
private DataManager mDataManager;
@Inject
public RepliesPresenter(DataManager mDataManager) {
this.mDataManager = mDataManager;
}
@Override
public void getContent(String topic_id) {
addSubscribe(mDataManager.fetchRepliesList(topic_id)
.compose(RxUtil.<List<RepliesListBean>>rxSchedulerHelper())
.subscribeWith(new CommonSubscriber<List<RepliesListBean>>(mView) {
@Override
public void onNext(List<RepliesListBean> repliesListBeen) {
mView.showContent(repliesListBeen);
}
})
);
}
@Override
public void getTopInfo(String topic_id) {
addSubscribe(mDataManager.fetchTopicInfo(topic_id)
.compose(RxUtil.<List<NodeListBean>>rxSchedulerHelper())
.filter(new Predicate<List<NodeListBean>>() {
@Override
public boolean test(@NonNull List<NodeListBean> nodeListBeen) throws Exception {
return nodeListBeen.size() > 0;
}
})
.map(new Function<List<NodeListBean>, NodeListBean>() {
@Override
public NodeListBean apply(List<NodeListBean> nodeListBeen) {
return nodeListBeen.get(0);
}
})
.subscribeWith(new CommonSubscriber<NodeListBean>(mView) {
@Override
public void onNext(NodeListBean nodeListBean) {
mView.showTopInfo(nodeListBean);
}
})
);
}
@Override
public void insert(RealmLikeBean bean) {
mDataManager.insertLikeBean(bean);
}
@Override
public void delete(String id) {
mDataManager.deleteLikeBean(id);
}
@Override
public boolean query(String id) {
return mDataManager.queryLikeId(id);
}
}