Last active
August 8, 2016 03:50
-
-
Save lgvalle/cd1a656ece1fff283f39 to your computer and use it in GitHub Desktop.
rxjava + facebook
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
public class FacebookHomeProvider { | |
protected final PublishSubject<FbPost> behaviorSubject; | |
private Request request; | |
public FacebookHomeProvider() { | |
behaviorSubject = PublishSubject.create(); | |
behaviorSubject.subscribeOn(Schedulers.io()); | |
} | |
/** | |
* Observable for this subject | |
* */ | |
public Observable<FbPost> getObservable() { | |
return behaviorSubject.asObservable(); | |
} | |
/** | |
* Call nextHomePage() every time a new page is needed. | |
* */ | |
public void nextHomePage() { | |
if (request == null) { | |
Bundle params = new Bundle(); | |
params.putString("fields", "id, from, message, picture, link, type, created_time"); | |
request = new Request(Session.getActiveSession(), "/me/home", params, HttpMethod.GET); | |
} | |
request.setCallback(new Request.Callback() { | |
@Override | |
public void onCompleted(Response response) { | |
FbHome fbPosts = new Gson().fromJson(response.getGraphObject().getInnerJSONObject().toString(), FbHome.class); | |
List<FbPost> data = fbPosts.getData(); | |
for (FbPost fbPost : data) { | |
behaviorSubject.onNext(fbPost); | |
} | |
behaviorSubject.onCompleted(); | |
// save cursor/request to next page | |
request = response.getRequestForPagedResults(Response.PagingDirection.NEXT); | |
} | |
}); | |
request.executeAsync(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment