aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java
diff options
context:
space:
mode:
authorDanilo Ercoli <ercoli@gmail.com>2016-01-05 16:52:55 +0100
committerDanilo Ercoli <ercoli@gmail.com>2016-01-05 16:52:55 +0100
commit454273952fbd38b2500f7c1435df04310bb550c0 (patch)
tree35f4af336d46b5a772c05644f2b097f44a51f99d /WordPress/src/main/java
parentf216e7b6bbebfb68df36d96fa6dd805f502efb7a (diff)
downloadgradle-perf-android-medium-454273952fbd38b2500f7c1435df04310bb550c0.tar.gz
Followers!
Diffstat (limited to 'WordPress/src/main/java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/stats/StatsEvents.java23
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java84
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/stats/StatsPublicizeFragment.java1
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/stats/service/StatsService.java7
4 files changed, 93 insertions, 22 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsEvents.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsEvents.java
index 673864947..231b140dd 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsEvents.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsEvents.java
@@ -6,6 +6,7 @@ import org.wordpress.android.ui.stats.models.AuthorsModel;
import org.wordpress.android.ui.stats.models.ClicksModel;
import org.wordpress.android.ui.stats.models.CommentFollowersModel;
import org.wordpress.android.ui.stats.models.CommentsModel;
+import org.wordpress.android.ui.stats.models.FollowersModel;
import org.wordpress.android.ui.stats.models.GeoviewsModel;
import org.wordpress.android.ui.stats.models.PublicizeModel;
import org.wordpress.android.ui.stats.models.ReferrersModel;
@@ -201,6 +202,28 @@ public class StatsEvents {
}
}
+ public static class FollowersWPCOMUdated extends SectionUpdatedAbstract {
+
+ public final FollowersModel mFollowers;
+
+ public FollowersWPCOMUdated(String blogId, StatsTimeframe timeframe, String date,
+ final int maxResultsRequested, final int pageRequested, FollowersModel responseObjectModel) {
+ super(blogId, timeframe, date, maxResultsRequested, pageRequested);
+ mFollowers = responseObjectModel;
+ }
+ }
+
+ public static class FollowersEmailUdated extends SectionUpdatedAbstract {
+
+ public final FollowersModel mFollowers;
+
+ public FollowersEmailUdated(String blogId, StatsTimeframe timeframe, String date,
+ final int maxResultsRequested, final int pageRequested, FollowersModel responseObjectModel) {
+ super(blogId, timeframe, date, maxResultsRequested, pageRequested);
+ mFollowers = responseObjectModel;
+ }
+ }
+
public static class JetpackSettingsCompleted {
public final boolean isError;
public JetpackSettingsCompleted(boolean isError) {
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java
index 97a0c0e30..997f2cb35 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java
@@ -33,6 +33,7 @@ import java.util.concurrent.ThreadPoolExecutor;
public class StatsFollowersFragment extends StatsAbstractListFragment {
public static final String TAG = StatsFollowersFragment.class.getSimpleName();
+ private static final String ARG_REST_RESPONSE_FOLLOWERS_EMAIL = "ARG_REST_RESPONSE_FOLLOWERS_EMAIL";
private final Map<String, Integer> userBlogs = new HashMap<>();
@Override
@@ -59,14 +60,6 @@ public class StatsFollowersFragment extends StatsAbstractListFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (savedInstanceState != null) {
- if (savedInstanceState.containsKey(ARGS_TOP_PAGER_SELECTED_BUTTON_INDEX)) {
- mTopPagerSelectedButtonIndex = savedInstanceState.getInt(ARGS_TOP_PAGER_SELECTED_BUTTON_INDEX);
- }
- } else {
- // first time it's created
- mTopPagerSelectedButtonIndex = getArguments().getInt(ARGS_TOP_PAGER_SELECTED_BUTTON_INDEX, 0);
- }
// Single background thread used to create the blogs list in BG
ThreadPoolExecutor blogsListCreatorExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(1);
@@ -88,11 +81,61 @@ public class StatsFollowersFragment extends StatsAbstractListFragment {
});
}
+ private FollowersModel mFollowersWPCOM;
+ private FollowersModel mFollowersEmail;
+
+ @Override
+ protected boolean hasPreviousDataAvailable() {
+ return mFollowersWPCOM != null && mFollowersEmail != null;
+ }
+ @Override
+ protected void savePreviousData(Bundle outState) {
+ if (mFollowersWPCOM != null) {
+ outState.putSerializable(ARG_REST_RESPONSE, mFollowersWPCOM);
+ }
+ if (mFollowersEmail != null) {
+ outState.putSerializable(ARG_REST_RESPONSE_FOLLOWERS_EMAIL, mFollowersEmail);
+ }
+ }
@Override
- public void onSaveInstanceState(Bundle outState) {
- //AppLog.d(AppLog.T.STATS, this.getTag() + " > saving instance state");
- outState.putInt(ARGS_TOP_PAGER_SELECTED_BUTTON_INDEX, mTopPagerSelectedButtonIndex);
- super.onSaveInstanceState(outState);
+ protected void restorePreviousData(Bundle savedInstanceState) {
+ if (savedInstanceState.containsKey(ARG_REST_RESPONSE)) {
+ mFollowersWPCOM = (FollowersModel) savedInstanceState.getSerializable(ARG_REST_RESPONSE);
+ }
+ if (savedInstanceState.containsKey(ARG_REST_RESPONSE_FOLLOWERS_EMAIL)) {
+ mFollowersEmail = (FollowersModel) savedInstanceState.getSerializable(ARG_REST_RESPONSE_FOLLOWERS_EMAIL);
+ }
+ }
+
+ @SuppressWarnings("unused")
+ public void onEventMainThread(StatsEvents.FollowersWPCOMUdated event) {
+ if (!shouldUpdateFragmentOnUpdateEvent(event)) {
+ return;
+ }
+
+ mFollowersWPCOM = event.mFollowers;
+ updateUI();
+ }
+
+ @SuppressWarnings("unused")
+ public void onEventMainThread(StatsEvents.FollowersEmailUdated event) {
+ if (!shouldUpdateFragmentOnUpdateEvent(event)) {
+ return;
+ }
+
+ mFollowersEmail = event.mFollowers;
+ updateUI();
+ }
+
+ @SuppressWarnings("unused")
+ public void onEventMainThread(StatsEvents.SectionUpdateError event) {
+ if (!shouldUpdateFragmentOnErrorEvent(event)) {
+ return;
+ }
+
+ mFollowersWPCOM = null;
+ mFollowersEmail = null;
+ showErrorUI(event.mError);
}
@Override
@@ -104,18 +147,13 @@ public class StatsFollowersFragment extends StatsAbstractListFragment {
mTopPagerContainer.setVisibility(View.VISIBLE);
mTotalsLabel.setVisibility(View.VISIBLE);
- if (mDatamodels == null) {
+ if (mFollowersWPCOM == null && mFollowersEmail == null) {
showHideNoResultsUI(true);
mTotalsLabel.setText(getTotalFollowersLabel(0));
return;
}
- if (isErrorResponse()) {
- showErrorUI();
- return;
- }
-
- final FollowersModel followersModel = (FollowersModel) mDatamodels[mTopPagerSelectedButtonIndex];
+ final FollowersModel followersModel = getCurrentDataModel();
if (followersModel != null && followersModel.getFollowers() != null &&
followersModel.getFollowers().size() > 0) {
ArrayAdapter adapter = new DotComFollowerAdapter(getActivity(), followersModel.getFollowers());
@@ -204,6 +242,10 @@ public class StatsFollowersFragment extends StatsAbstractListFragment {
}
}
+ private FollowersModel getCurrentDataModel() {
+ return mTopPagerSelectedButtonIndex == 0 ? mFollowersWPCOM : mFollowersEmail;
+ }
+
private void setNavigationBackButtonsVisibility(boolean visible) {
mBottomPaginationGoBackButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
mTopPaginationGoBackButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
@@ -223,10 +265,10 @@ public class StatsFollowersFragment extends StatsAbstractListFragment {
@Override
protected boolean isViewAllOptionAvailable() {
- if (isDataEmpty()) {
+ if (!hasPreviousDataAvailable()) {
return false;
}
- FollowersModel followersModel = (FollowersModel) mDatamodels[mTopPagerSelectedButtonIndex];
+ FollowersModel followersModel = getCurrentDataModel();
return !(followersModel == null || followersModel.getFollowers() == null
|| followersModel.getFollowers().size() < MAX_NUM_OF_ITEMS_DISPLAYED_IN_LIST);
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsPublicizeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsPublicizeFragment.java
index 5b2bbb0f8..c57237aa0 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsPublicizeFragment.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsPublicizeFragment.java
@@ -10,7 +10,6 @@ import android.widget.ArrayAdapter;
import org.wordpress.android.R;
import org.wordpress.android.ui.stats.models.PublicizeModel;
import org.wordpress.android.ui.stats.models.SingleItemModel;
-import org.wordpress.android.ui.stats.models.TagsContainerModel;
import org.wordpress.android.ui.stats.service.StatsService;
import org.wordpress.android.util.FormatUtils;
import org.wordpress.android.util.GravatarUtils;
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/service/StatsService.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/service/StatsService.java
index 0a2f3ee32..8fdc3d847 100644
--- a/WordPress/src/main/java/org/wordpress/android/ui/stats/service/StatsService.java
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/service/StatsService.java
@@ -25,6 +25,7 @@ import org.wordpress.android.ui.stats.models.BaseStatsModel;
import org.wordpress.android.ui.stats.models.ClicksModel;
import org.wordpress.android.ui.stats.models.CommentFollowersModel;
import org.wordpress.android.ui.stats.models.CommentsModel;
+import org.wordpress.android.ui.stats.models.FollowersModel;
import org.wordpress.android.ui.stats.models.GeoviewsModel;
import org.wordpress.android.ui.stats.models.PublicizeModel;
import org.wordpress.android.ui.stats.models.ReferrersModel;
@@ -169,6 +170,12 @@ public class StatsService extends Service {
case PUBLICIZE:
return new StatsEvents.PublicizeUpdated(blogId, timeframe, date,
maxResultsRequested, pageRequested, (PublicizeModel)data);
+ case FOLLOWERS_WPCOM:
+ return new StatsEvents.FollowersWPCOMUdated(blogId, timeframe, date,
+ maxResultsRequested, pageRequested, (FollowersModel)data);
+ case FOLLOWERS_EMAIL:
+ return new StatsEvents.FollowersEmailUdated(blogId, timeframe, date,
+ maxResultsRequested, pageRequested, (FollowersModel)data);
default:
return new StatsEvents.SectionUpdated(this, blogId, timeframe, date,
maxResultsRequested, pageRequested, data);