package io.hefuyi.zhihudaily.mvp.presenter;
import io.hefuyi.zhihudaily.domain.FetchThemesUsecase;
import io.hefuyi.zhihudaily.mvp.contract.NavigationContract;
import io.hefuyi.zhihudaily.mvp.model.Themes;
import rx.Subscription;
import rx.functions.Action1;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/**
* Created by hefuyi on 16/8/22.
*/
public class NavigationPresenter implements NavigationContract.Presenter{
private FetchThemesUsecase mUsecase;
private NavigationContract.View mView;
private Subscription mSubscription;
public NavigationPresenter(FetchThemesUsecase usecase) {
this.mUsecase = usecase;
}
@Override
public void attachView(NavigationContract.View view) {
this.mView = view;
}
@Override
public void onCreate() {
}
@Override
public void onStart() {
}
@Override
public void onPause() {
}
@Override
public void onStop() {
if (mSubscription != null && mSubscription.isUnsubscribed()) {
mSubscription.unsubscribe();
}
}
@Override
public void refresh() {
mSubscription = mUsecase.execute()
.subscribeOn(Schedulers.io())
.onErrorReturn(new Func1<Throwable, Themes>() {
@Override
public Themes call(Throwable throwable) {
mView.showError();
return null;
}
})
.subscribe(new Action1<Themes>() {
@Override
public void call(Themes themes) {
if (themes != null) {
mView.showThemes(themes);
}
}
});
}
}