package tellh.com.gitclub.common.utils;
import okhttp3.ResponseBody;
import retrofit2.Response;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
import tellh.com.gitclub.common.base.BaseView;
/**
* Created by tlh on 2016/8/27 :)
*/
public class RxJavaUtils {
public static <T> Observable.Transformer<T, T> applySchedulers() {
return new Observable.Transformer<T, T>() {
@Override
public Observable<T> call(Observable<T> observable) {
return observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
};
}
public static <T> Observable.Transformer<T, T> setLoadingListener(final BaseView view) {
return new Observable.Transformer<T, T>() {
@Override
public Observable<T> call(Observable<T> observable) {
return observable.doOnSubscribe(new Action0() {
@Override
public void call() {
view.showOnLoading();
}
});
}
};
}
public static Observable.Transformer<Response<ResponseBody>, Boolean> checkIfSuccessCode() {
return new Observable.Transformer<Response<ResponseBody>, Boolean>() {
@Override
public Observable<Boolean> call(Observable<Response<ResponseBody>> observable) {
return observable.map(new Func1<Response<ResponseBody>, Boolean>() {
@Override
public Boolean call(Response<ResponseBody> response) {
return response != null && response.code() == 204;
}
});
}
};
}
}