package com.novoda.data;
import rx.Observable;
import rx.functions.Func1;
public final class SyncFunctions {
private SyncFunctions() {
throw new IllegalStateException("NonInstantiableClassException");
}
public static <T> Observable.Transformer<T, SyncedData<T>> asSyncedAction(final SyncedDataCreator<T> syncedDataCreator) {
return new Observable.Transformer<T, SyncedData<T>>() {
@Override
public Observable<SyncedData<T>> call(Observable<T> observable) {
return observable
.map(new Func1<T, SyncedData<T>>() {
@Override
public SyncedData<T> call(T value) {
return syncedDataCreator.onConfirmed(value);
}
})
.onErrorReturn(new Func1<Throwable, SyncedData<T>>() {
@Override
public SyncedData<T> call(Throwable throwable) {
return syncedDataCreator.onError();
}
})
.startWith(syncedDataCreator.startWith());
}
};
}
}