Skip to content

Instantly share code, notes, and snippets.

@Firsto
Last active June 14, 2017 11:27
Show Gist options
  • Save Firsto/19d4ea078ae8b0974e096fe6042edfca to your computer and use it in GitHub Desktop.
Save Firsto/19d4ea078ae8b0974e096fe6042edfca to your computer and use it in GitHub Desktop.
import com.arellomobile.mvp.MvpPresenter;
import com.arellomobile.mvp.MvpView;
import gb.sweetlifecl.di.module.SchedulerProvider;
import rx.Completable;
import rx.Observable;
import rx.Single;
import rx.Subscription;
public abstract class RxPresenter<V extends MvpView> extends MvpPresenter<V> {
private SchedulerProvider schedulerProvider;
public RxPresenter(SchedulerProvider schedulerProvider) {
this.schedulerProvider = schedulerProvider;
}
public void unsubscribe(Subscription... subscriptions) {
for (Subscription subscription : subscriptions) {
if (subscription != null && !subscription.isUnsubscribed()) {
subscription.unsubscribe();
}
}
}
protected <T> Observable.Transformer<T, T> applyObservableSchedulers() {
return observable -> observable.subscribeOn(schedulerProvider.getSubscribeOn())
.observeOn(schedulerProvider.getObserveOn());
}
protected <T> Single.Transformer<T, T> applySingleSchedulers() {
return single -> single.subscribeOn(schedulerProvider.getSubscribeOn())
.observeOn(schedulerProvider.getObserveOn());
}
protected Completable.Transformer applyCompletableSchedulers() {
return completable -> completable.subscribeOn(schedulerProvider.getSubscribeOn())
.observeOn(schedulerProvider.getObserveOn());
}
public void setSchedulerProvider(SchedulerProvider schedulerProvider) {
this.schedulerProvider = schedulerProvider;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment