Skip to content

Instantly share code, notes, and snippets.

View pyadav's full-sized avatar
🐢
learning new stuff

Praveen Yadav pyadav

🐢
learning new stuff
View GitHub Profile
@pyadav
pyadav / RxPermission.kt
Created August 8, 2016 04:05 — forked from eungju/RxPermission.kt
Android Permissions with RxJava
import rx.Observable
interface RxPermission {
val isGranted: Boolean
fun request(): Observable<Boolean>
}
@pyadav
pyadav / rx click event.java
Created August 8, 2016 04:06 — forked from vuhung3990/rx click event.java
Rxjava for handle event
// sample 3 UI event
mButton = (Button) findViewById(R.id.button);
Observable<View> clickEventObservable = Observable.create(new Observable.OnSubscribe<View>() {
@Override
public void call(final Subscriber<? super View> subscriber) {
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
subscriber.onNext(v);
}
@pyadav
pyadav / Main.java
Created August 8, 2016 04:07 — forked from jooyunghan/Main.java
Retrofit + RxJava in Java
package com.company;
import retrofit.RestAdapter;
import retrofit.http.GET;
import retrofit.http.Path;
import rx.Observable;
import rx.Subscriber;
import rx.functions.Action1;
import rx.functions.Func1;
import rx.functions.Func2;
@pyadav
pyadav / CachedRefreshable.java
Created August 8, 2016 04:07 — forked from austynmahoney/CachedRefreshable.java
RxJava Refreshable Pattern
public abstract class CachedRefreshable<P, T> extends Refreshable<P, T> {
protected abstract Observable<T> getSourceObservable(P parameters);
/**
* Return the Observable that gets data from a cached source.
*
* @return Observable from cache item, or null if the cache misses.
*/
protected abstract Observable<T> getCachedObservable(P parameters);
@pyadav
pyadav / AndroidScheduler.java
Created August 8, 2016 04:09 — forked from prabirshrestha/AndroidScheduler.java
RxJava Android scheduler
package rx.concurrency;
import android.os.Handler;
import android.os.Looper;
import rx.Scheduler;
import rx.Subscription;
import rx.concurrency.ExecutorScheduler;
import rx.util.AtomicObservableSubscription;
import rx.util.functions.Func2;
function rxfetch(url) {
return rxfetch(url).flatMap(function (response) {
var next = response.headers.get('Link').replace(/<([^<]*)>; rel="next".*/, '$1');
return Rx.Observable.concat(Rx.Observable.just(response), next ? rxfetch3(next) : Rx.Observable.empty());
});
}
rxfetch('https://api.github.com/users/yongjhih/repos')
.map(function (response) { return response.json(); })
.flatMap(function (json) { return Rx.Observable.from(json); })
public void login(final String mac, final String devicesOs, final String appVersion, String userAcct, String userPwd, String memType) {
getSubscription().add(ApiClient.getInstance().personLogin(mac, devicesOs, appVersion, userAcct, userPwd, memType)
.subscribeOn(Schedulers.newThread()) // (1)
.observeOn(AndroidSchedulers.mainThread()) // (2)
.flatMap(new Func1<PersonLogin, Observable<PersonData>>() {
@Override
public Observable<PersonData> call(PersonLogin personLogin) {
// main thread
return ApiClient.getInstance().queryPersonData(mac, devicesOs, appVersion, personLogin.getUId(), personLogin.getSessionId()).subscribeOn(Schedulers.newThread());
}
public void login(final String mac, final String devicesOs, final String appVersion, String userAcct, String userPwd, String memType) {
getSubscription().add(ApiClient.getInstance().personLogin(mac, devicesOs, appVersion, userAcct, userPwd, memType)
.doOnSubscribe(new Action0() {
@Override
public void call() {
getView().showLoading();
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread()) // (a)
return RxFb.api(FB_APP_ID, FB_CLIENT_ID, "/me?fields=email", { access_token: fbToken; }).flatMap(fbUser -> {
var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("email", fbUser.email);
return Observable.unzip(fbToken, ParseObservable.find(userQuery)); // magic
}).switchIfEmpty(fbToken -> {
var newUser = new Parse.User();
newUser.setUsername(fbUser.email);
newUser.setEmail(fbUser.email)
newUser.setPassword(fbToken);
return ParseObservable.signUp(newUser);
@pyadav
pyadav / ZipObservables.java
Created August 8, 2016 04:17 — forked from ChrisLowe-Takor/ZipObservables.java
Android RxJava zip two observables
// Say you have two observables (Bar and Baz) you want to combine into a single output (Foo)
public Observable<Foo> combineObservables(Observable<Bar> barObservable, Observable<Baz> bazObservable) {
return Observable.zip(
barObservable,
bazObservable,
new Func2<Bar, Baz, Foo>() {
@Override