package in.mvpstarter.sample.ui.detail; import javax.inject.Inject; import in.mvpstarter.sample.data.DataManager; import in.mvpstarter.sample.data.model.Pokemon; import in.mvpstarter.sample.data.model.Statistic; import in.mvpstarter.sample.injection.ConfigPersistent; import in.mvpstarter.sample.ui.base.BasePresenter; import io.reactivex.SingleObserver; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; @ConfigPersistent public class DetailPresenter extends BasePresenter<DetailMvpView> { private final DataManager mDataManager; @Inject DetailPresenter(DataManager dataManager) { mDataManager = dataManager; } @Override public void attachView(DetailMvpView mvpView) { super.attachView(mvpView); } void getPokemon(String name) { checkViewAttached(); getMvpView().showProgress(true); mDataManager.getPokemon(name) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new SingleObserver<Pokemon>() { @Override public void onSubscribe(Disposable d) { } @Override public void onSuccess(Pokemon pokemon) { getMvpView().showProgress(false); getMvpView().showPokemon(pokemon); for (Statistic statistic : pokemon.stats) { getMvpView().showStat(statistic); } } @Override public void onError(Throwable error) { getMvpView().showProgress(false); getMvpView().showError(error); } }); } }