package com.tevinjeffrey.rutgersct.ui.chooser; import com.tevinjeffrey.rutgersct.rutgersapi.RetroRutgers; import com.tevinjeffrey.rutgersct.rutgersapi.model.SystemMessage; import com.tevinjeffrey.rutgersct.ui.base.BasePresenter; import com.tevinjeffrey.rutgersct.utils.AndroidMainThread; import com.tevinjeffrey.rutgersct.utils.BackgroundThread; import com.tevinjeffrey.rutgersct.utils.RxUtils; import javax.inject.Inject; import rx.Scheduler; import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action0; import rx.schedulers.Schedulers; public class ChooserPresenterImpl extends BasePresenter implements ChooserPresenter { private static final String TAG = ChooserPresenterImpl.class.getSimpleName(); @Inject RetroRutgers mRetroRutgers; @Inject @AndroidMainThread Scheduler mMainThread; @Inject @BackgroundThread Scheduler mBackgroundThread; private Subscription mSubsciption; private boolean isLoading; public ChooserPresenterImpl() { } @Override public void loadSystemMessage() { cancePreviousSubscription(); Subscriber<SystemMessage> mSubscriber = new Subscriber<SystemMessage>() { @Override public void onCompleted() { //Noop } @Override public void onError(Throwable e) { //Noop } @Override public void onNext(SystemMessage systemMessage) { if (getView() != null) { getView().showMessage(systemMessage); } } }; mSubsciption = mRetroRutgers.getSystemMessage() .doOnSubscribe(new Action0() { @Override public void call() { isLoading = true; } }) .doOnTerminate(new Action0() { @Override public void call() { isLoading = false; } }) .subscribeOn(mBackgroundThread) .observeOn(mMainThread) .subscribe(mSubscriber); } private void cancePreviousSubscription() { RxUtils.unsubscribeIfNotNull(mSubsciption); } @Override public boolean isLoading() { return isLoading; } public ChooserView getView() { return (ChooserView) super.getView(); } }