package io.hefuyi.listener.mvp.presenter;
import java.util.List;
import io.hefuyi.listener.mvp.contract.SearchContract;
import io.hefuyi.listener.mvp.usecase.GetSearchResult;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
/**
* Created by hefuyi on 2017/1/3.
*/
public class SearchPresenter implements SearchContract.Presenter{
private GetSearchResult mUsecase;
private SearchContract.View mView;
private Subscription mSubscription;
public SearchPresenter(GetSearchResult getSearchResult) {
mUsecase = getSearchResult;
}
@Override
public void attachView(SearchContract.View view) {
mView = view;
}
@Override
public void subscribe() {
}
@Override
public void unsubscribe() {
if (mSubscription != null && mSubscription.isUnsubscribed()) {
mSubscription.unsubscribe();
}
}
@Override
public void search(String queryString) {
if (mSubscription != null && mSubscription.isUnsubscribed()) {
mSubscription.unsubscribe();
}
mSubscription = mUsecase.execute(new GetSearchResult.RequestValues(queryString))
.getResultList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<List<Object>>() {
@Override
public void call(List<Object> list) {
if (list != null && list.size() == 3) {
mView.showEmptyView();
} else {
mView.showSearchResult(list);
}
}
});
}
}