Skip to content

Instantly share code, notes, and snippets.

View feresr's full-sized avatar

Fernando Raviola feresr

View GitHub Profile
@feresr
feresr / RxStore.java
Last active February 2, 2017 16:58
RxStore
public abstract class RxStore<Input, Output> {
private BehaviorSubject<Input> subject = BehaviorSubject.create();
private Observable<Output> observable;
public final Subscription register(Subscriber<Output> subscriber) {
if (observable == null) {
observable = subject.compose(getTransformer());
}
return observable.subscribe(subscriber);
@feresr
feresr / errorHandling.java
Created January 30, 2017 18:59
swallError
observableThatShouldNotCompleteOnError
.flatMap(e -> obsrevableThatMayThrow(e)
.onErrorResumeNext(Observable.empty())
).subscribe()
@Override public void onNext(DataResponse response) {
if (response.isSuccessful()) {
displayData(response.getData());
} else {
showError(response.getError());
}
}
@feresr
feresr / errorHandling.java
Created January 30, 2017 18:57
Error handling response
@Override public void onNext(DataResponse response) {
if (response.isSuccessful()) {
displayData(response.getData());
} else {
showError(response.getError());
}
}
@feresr
feresr / multicasting3.java
Last active January 30, 2017 21:53
multicast3
Observable<Data> dataStream = RxView.clicks(button)
.observeOn(Schedulers.io())
.debounce(2, TimeUnit.SECONDS)
.flatMap(new Func1<Void, Observable<Data>>() {
@Override
public Observable<Data> call(Void aVoid) {
Log.d(TAG, "Performing network request...");
return apiEndpoints.getData();
}
})
@feresr
feresr / multicast2.java
Last active January 30, 2017 21:53
multicast2
Observable<Data> dataStream = Observable.just(1)
.observeOn(Schedulers.io())
.debounce(2, TimeUnit.SECONDS)
.flatMap(new Func1<Integer, Observable<Data>>() {
@Override
public Observable<Data> call(Integer aVoid) {
Log.d(TAG, "Performing network request...");
return apiEndpoints.getData();
}
})
@feresr
feresr / multicast.java
Last active January 30, 2017 21:52
Multicast
Observable<Data> dataStream = RxView.clicks(button)... //create the stream as before
dataStream.subscribe(data -> Log.d(TAG, "View one received the data"));
dataStream.subscribe(data -> Log.d(TAG, "View two received the data"));
@feresr
feresr / sample4.java
Created January 28, 2017 18:19
sample.java
RxView.clicks(button)
.observeOn(Schedulers.io())
.debounce(2, TimeUnit.SECONDS)
.flatMap(aVoid -> apiEndpoints.getData())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(...);
RxView.clicks(button)
.flatMap(new Func1<Void, Observable<Data>>() {
@Override
public Observable<Data> call(Void aVoid) {
return apiEndpoints
.getData()
.subscribeOn(Schedulers.io());
}
})
.observeOn(AndroidSchedulers.mainThread())
@feresr
feresr / step2.java
Last active January 28, 2017 06:32
Observable<Data> dataStream = RxView.clicks(button)
.flatMap(new Func1<Void, Observable<Data>>() {
@Override
public Observable<Data> call(Void aVoid) {
return apiEndpoints.getData();
}
});