diff options
author | Danilo Ercoli <ercoli@gmail.com> | 2016-01-05 16:52:55 +0100 |
---|---|---|
committer | Danilo Ercoli <ercoli@gmail.com> | 2016-01-05 16:52:55 +0100 |
commit | 454273952fbd38b2500f7c1435df04310bb550c0 (patch) | |
tree | 35f4af336d46b5a772c05644f2b097f44a51f99d /WordPress/src/main/java | |
parent | f216e7b6bbebfb68df36d96fa6dd805f502efb7a (diff) | |
download | gradle-perf-android-medium-454273952fbd38b2500f7c1435df04310bb550c0.tar.gz |
Followers!
Diffstat (limited to 'WordPress/src/main/java')
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); |