This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface UserManager { | |
User getUser(); | |
void setName(String name); | |
void setAge(int age); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface UserManager { | |
Observable<User> getUser(); | |
Completable setName(String name); | |
Completable setAge(int age); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// onCreate | |
disposables.add(um.getUser() | |
.observeOn(AndroidSchedulers.mainThread()) | |
.subscribeWith(new DisposableObserver<User>() { | |
@Override public void onNext(User user) { | |
tv.setText(user.toString()); | |
} | |
@Override public void onComplete() { /* ignored */ } | |
@Override public void onError(Throwable t) { /* crash or show */ } | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// onCreate | |
disposables.add(um.getUser() | |
.observeOn(AndroidSchedulers.mainThread()) | |
.subscribeWith(new DisposableObserver<User>() { | |
@Override public void onNext(User user) { | |
tv.setText(user.toString()); | |
} | |
@Override public void onComplete() { /* ignored */ } | |
@Override public void onError(Throwable t) { /* crash or show */ } | |
})); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
disposables.add(RxView.clicks(submitView) | |
.doOnNext(ignored -> { | |
submitView.setEnabled(false); | |
progressView.setVisibility(VISIBLE); | |
}) | |
.flatMap(ignored -> service.setName(nameView.getText().toString())) | |
.observeOn(AndroidSchedulers.mainThread()) | |
.doOnNext(ignored -> progressView.setVisibility(GONE)) | |
.subscribe(s -> finish(), t -> { | |
submitView.setEnabled(true); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class SubmitUiModel { | |
final boolean inProgress; | |
final boolean success; | |
final String errorMessage; | |
private SubmitUiModel(boolean inProgress, boolean success, String errorMessage) { | |
// ... | |
} | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
disposables.add(RxView.clicks(submitView) | |
.map(ignored -> new SubmitEvent(nameView.getText().toString())) | |
.doOnNext(ignored -> { | |
submitView.setEnabled(false); | |
progressView.setVisibility(VISIBLE); | |
}) | |
.flatMap(event -> service.setName(event.name)) | |
.observeOn(AndroidSchedulers.mainThread()) | |
.doOnNext(ignored -> progressView.setVisibility(GONE)) | |
.subscribe(s -> finish(), t -> { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class SubmitUiModel { | |
final boolean inProgress; | |
final boolean success; | |
final String errorMessage; | |
private SubmitUiModel( | |
boolean inProgress, boolean success, String errorMessage) { | |
// ... | |
} | |
static SubmitUiModel inProgress() { /* ... */ } | |
static SubmitUiModel success() { /* ... */ } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
disposables.add(RxView.clicks(submitView) | |
.map(ignored -> new SubmitEvent(nameView.getText().toString())) | |
.flatMap(event -> service.setName(event.name) | |
.map(response -> SubmitUiModel.success()) | |
.onErrorReturn(t -> SubmitUiModel.failure(t.getMessage())) | |
.observeOn(AndroidSchedulers.mainThread()) | |
.startWith(SubmitUiModel.inProgress())) | |
.subscribe(model -> { | |
submitView.setEnabled(!model.inProgress); | |
progressView.setVisibility(model.inProgress ? VISIBLE : GONE); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Observable<SubmitEvent> events = RxView.clicks(submitView) | |
.map(ignored -> new SubmitEvent(nameView.getText().toString())); | |
Observable<SubmitUiModel> models = events | |
.flatMap(event -> service.setName(event.name) | |
.map(response -> SubmitUiModel.success()) | |
.onErrorReturn(t -> SubmitUiModel.failure(t.getMessage())) | |
.observeOn(AndroidSchedulers.mainThread()) | |
.startWith(SubmitUiModel.inProgress())); |