Skip to content

Instantly share code, notes, and snippets.

View feresr's full-sized avatar

Fernando Raviola feresr

View GitHub Profile
@feresr
feresr / UsingRxStorage.java
Last active February 1, 2017 21:21
using rx storage
public class JokesPresenter extends BasePresenter<JokesView> {
private JokesStore store;
private Subscription subscription;
@Inject
public JokesPresenter(JokesStore jokesStore) { this.store = jokesStore; }
@Override
public void onCreate() {
@feresr
feresr / JokesStore.java
Last active February 1, 2017 21:22
RxDataStore implementation
public class JokesStore extends RxStore<JokeRequest, JokeResponse> {
private JokesEndpoint endpoints;
@Inject
public JokesStore(JokesEndpoint endpoints) {
this.endpoints = endpoints;
}
@Override
@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 / rxRelayAwesome1.java
Last active February 3, 2017 05:07
RxRelays are awesome 1
public abstract class RxStore<Input, Output> {
private BehaviorRelay<Output> relay = BehaviorRelay.create(defaultValue());
public final Subscription register(Subscriber<Output> subscriber) {
return relay.subscribe(subscriber);
}
public final void execute(Input event) {
buildObservable(event).subscribe(relay);
}
@feresr
feresr / rxRelayAwesome2.java
Last active February 3, 2017 13:31
rxRelayAwesome
public Constructor() {
observable = endpoints.getJoke().doOnNext(joke -> storage.save(joke)).publish();
}
public void execute() {
observable.connect();
}
public Subscription subscribe(Subscriber<Joke> subscriber) { } //subscribe
public final void unsubscribe(Subscription) { } //unsubscribe
@feresr
feresr / rxRelayAwesome3.java
Last active February 3, 2017 14:16
rxRelayAwesome
public class JokesStore extends RxStore<JokeRequest, JokeResponse> {
private Observable<JokeResponse> buildObservable(JokeRequest event) {
return endpoints.getJoke(event.jokeNumber)
.subscribeOn().onBackPressureDrop()
.doOnNext(joke -> storage.save(joke))
.onErrorReturn() //create a joke response, set isSuccessful to false)
.observeOn();
}
@feresr
feresr / rxRelayAwesome0.java
Last active February 5, 2017 23:24
RxRelayAwesome
public void execute() {
//doesn't actually execute anything just yet... just creates the observable
observable = endpoints.getJoke().doOnNext(joke -> storage.save(joke));
}
public Subscription subscribe(Subscriber<Joke> subscriber) {
return observable.subscribe(subscriber);
}
public final void unsubscribe(Subscription subscription) { } //unsubscribe
package com.example.gonzalo_mov.congreso;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
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 / org.mockito.plugins.MockMaker
Created August 13, 2017 23:32
Mockito enable mock final classes
content: mock-maker-inline