package com.afollestad.aesthetic; import android.support.annotation.RestrictTo; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.ObservableTransformer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.annotations.NonNull; import io.reactivex.exceptions.Exceptions; import io.reactivex.functions.Consumer; import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP; /** @author Aidan Follestad (afollestad) */ @RestrictTo(LIBRARY_GROUP) final class Rx { static Consumer<Throwable> onErrorLogAndRethrow() { return new Consumer<Throwable>() { @Override public void accept(@NonNull Throwable throwable) throws Exception { throwable.printStackTrace(); throw Exceptions.propagate(throwable); } }; } static <T> ObservableTransformer<T, T> distinctToMainThread() { return new ObservableTransformer<T, T>() { @Override public ObservableSource<T> apply(@NonNull Observable<T> obs) { return obs.observeOn(AndroidSchedulers.mainThread()).distinctUntilChanged(); } }; } }