Skip to content

Instantly share code, notes, and snippets.

@lgvalle
Last active August 8, 2016 03:50
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save lgvalle/cd1a656ece1fff283f39 to your computer and use it in GitHub Desktop.
Save lgvalle/cd1a656ece1fff283f39 to your computer and use it in GitHub Desktop.
rxjava + facebook
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