aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java
diff options
context:
space:
mode:
authorOguz Kocer <oguz.kocer@automattic.com>2016-06-30 18:01:01 +0300
committerOguz Kocer <oguz.kocer@automattic.com>2016-06-30 18:01:01 +0300
commit1ebc715e45df5faf4003235c003a983f0b6ef03e (patch)
tree88d870758c6f2fcb3a80ab27e10b3d3f29bc69a6 /WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java
parentbf8f5e0303ebebbc76cade20d9df8d589da0f4c6 (diff)
downloadgradle-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.java55
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);
}