diff options
author | Oguz Kocer <oguz.kocer@automattic.com> | 2016-06-30 18:01:01 +0300 |
---|---|---|
committer | Oguz Kocer <oguz.kocer@automattic.com> | 2016-06-30 18:01:01 +0300 |
commit | 1ebc715e45df5faf4003235c003a983f0b6ef03e (patch) | |
tree | 88d870758c6f2fcb3a80ab27e10b3d3f29bc69a6 /WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java | |
parent | bf8f5e0303ebebbc76cade20d9df8d589da0f4c6 (diff) | |
download | gradle-perf-android-medium-1ebc715e45df5faf4003235c003a983f0b6ef03e.tar.gz |
Implements fetch viewers network request
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java b/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java index 54275b19a..adebe214f 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java @@ -31,7 +31,8 @@ public class PeopleUtils { if (jsonObject != null && callback != null) { try { JSONArray jsonArray = jsonObject.getJSONArray("users"); - List<Person> people = peopleListFromJSON(jsonArray, blogId, localTableBlogId, false, false); + List<Person> people = peopleListFromJSON(jsonArray, blogId, localTableBlogId, false, false, + false); int numberOfUsers = jsonObject.optInt("found"); boolean isEndOfList = (people.size() + offset) >= numberOfUsers; callback.onSuccess(people, isEndOfList); @@ -82,7 +83,7 @@ public class PeopleUtils { try { JSONArray jsonArray = jsonObject.getJSONArray("subscribers"); List<Person> people = peopleListFromJSON(jsonArray, blogId, localTableBlogId, !isEmailFollower, - isEmailFollower); + isEmailFollower, false); int pageFetched = jsonObject.optInt("page"); int numberOfPages = jsonObject.optInt("pages"); boolean isEndOfList = page >= numberOfPages || page >= FOLLOWER_PAGE_LIMIT; @@ -114,6 +115,47 @@ public class PeopleUtils { WordPress.getRestClientUtilsV1_1().get(path, params, null, listener, errorListener); } + private static void fetchViewers(final String blogId, final int localTableBlogId, final int offset, + final FetchViewersCallback callback) { + com.wordpress.rest.RestRequest.Listener listener = new RestRequest.Listener() { + @Override + public void onResponse(JSONObject jsonObject) { + if (jsonObject != null && callback != null) { + try { + JSONArray jsonArray = jsonObject.getJSONArray("viewers"); + List<Person> people = peopleListFromJSON(jsonArray, blogId, localTableBlogId, false, false, + true); + int numberOfUsers = jsonObject.optInt("found"); + boolean isEndOfList = (people.size() + offset) >= numberOfUsers; + callback.onSuccess(people, isEndOfList); + } + catch (JSONException e) { + AppLog.e(T.API, "JSON exception occurred while parsing the response for " + + "sites/%s/viewers: " + e); + callback.onError(); + } + } + } + }; + + RestRequest.ErrorListener errorListener = new RestRequest.ErrorListener() { + @Override + public void onErrorResponse(VolleyError volleyError) { + AppLog.e(T.API, volleyError); + if (callback != null) { + callback.onError(); + } + } + }; + + int page = (int) Math.floor(offset / FETCH_LIMIT) + 1; + Map<String, String> params = new HashMap<>(); + params.put("number", Integer.toString(FETCH_LIMIT)); + params.put("page", Integer.toString(page)); + String path = String.format("sites/%s/viewers", blogId); + WordPress.getRestClientUtilsV1_1().get(path, params, null, listener, errorListener); + } + public static void updateRole(final String blogId, long personID, String newRole, final int localTableBlogId, final UpdateUserCallback callback) { com.wordpress.rest.RestRequest.Listener listener = new RestRequest.Listener() { @@ -219,7 +261,8 @@ public class PeopleUtils { } private static List<Person> peopleListFromJSON(JSONArray jsonArray, String blogId, int localTableBlogId, - boolean isFollower, boolean isEmailFollower) throws JSONException { + boolean isFollower, boolean isEmailFollower, + boolean isViewer) throws JSONException { if (jsonArray == null) { return null; } @@ -230,6 +273,8 @@ public class PeopleUtils { Person person; if (isFollower || isEmailFollower) { person = Person.followerFromJSON(jsonArray.optJSONObject(i), blogId, localTableBlogId, isEmailFollower); + } else if (isViewer) { + person = Person.viewerFromJSON(jsonArray.optJSONObject(i), blogId, localTableBlogId); } else { person = Person.userFromJSON(jsonArray.optJSONObject(i), blogId, localTableBlogId); } @@ -249,6 +294,10 @@ public class PeopleUtils { void onSuccess(List<Person> peopleList, int pageFetched, boolean isEndOfList); } + public interface FetchViewersCallback extends Callback { + void onSuccess(List<Person> peopleList, boolean isEndOfList); + } + public interface RemoveUserCallback extends Callback { void onSuccess(long personID, int localTableBlogId); } |