jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/404617 )

Change subject: Dynamically update status of save&share button in Randomizer 
page
......................................................................


Dynamically update status of save&share button in Randomizer page

 - Default => disable button
 - When card has been loaded => enable button
 - Add status into SparseBooleanArray for a beter performance

Bug: T184869
Change-Id: I4930582bff28331b5b1a002e1b5a0166e1ce769c
---
M app/src/main/java/org/wikipedia/random/RandomFragment.java
M app/src/main/java/org/wikipedia/random/RandomItemFragment.java
2 files changed, 40 insertions(+), 2 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/app/src/main/java/org/wikipedia/random/RandomFragment.java 
b/app/src/main/java/org/wikipedia/random/RandomFragment.java
index 29e2c2e..6bb1356 100644
--- a/app/src/main/java/org/wikipedia/random/RandomFragment.java
+++ b/app/src/main/java/org/wikipedia/random/RandomFragment.java
@@ -11,6 +11,7 @@
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.AppCompatActivity;
+import android.util.SparseBooleanArray;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -44,8 +45,13 @@
     private Unbinder unbinder;
     private ExclusiveBottomSheetPresenter bottomSheetPresenter = new 
ExclusiveBottomSheetPresenter();
     private boolean saveButtonState;
+    private SparseBooleanArray loadSatusMap = new SparseBooleanArray();
     private ViewPagerListener viewPagerListener = new ViewPagerListener();
     @Nullable private RandomizerFunnel funnel;
+
+    interface Callback {
+        void onChildLoaded();
+    }
 
     @NonNull
     public static RandomFragment newInstance() {
@@ -65,6 +71,7 @@
         randomPager.setPageTransformer(true, new RandomPagerTransformer());
         randomPager.addOnPageChangeListener(viewPagerListener);
 
+        enableSaveShareButton(false);
         updateBackButton(0);
         if (savedInstanceState != null && randomPager.getCurrentItem() == 0 && 
getTopTitle() != null) {
             updateSaveShareButton(getTopTitle());
@@ -161,6 +168,12 @@
         });
     }
 
+    @SuppressWarnings("magicnumber")
+    public void enableSaveShareButton(boolean enable) {
+        saveButton.setClickable(enable);
+        saveButton.setAlpha(enable ? 1f : 0.5f);
+    }
+
     @Nullable private PageTitle getTopTitle() {
         FragmentManager fm = getFragmentManager();
         for (Fragment f : fm.getFragments()) {
@@ -172,7 +185,8 @@
         return null;
     }
 
-    private class RandomItemAdapter extends FragmentPagerAdapter {
+    private class RandomItemAdapter extends FragmentPagerAdapter{
+
         RandomItemAdapter(AppCompatActivity activity) {
             super(activity.getSupportFragmentManager());
         }
@@ -184,8 +198,17 @@
 
         @Override
         public Fragment getItem(int position) {
+
+            loadSatusMap.append(position, false);
             RandomItemFragment f = RandomItemFragment.newInstance();
             f.setPagerPosition(position);
+            f.setCallback(() -> {
+                if (randomPager != null && randomPager.getCurrentItem() == 
position) {
+                    enableSaveShareButton(f.isLoadComplete());
+                }
+                loadSatusMap.append(position, f.isLoadComplete());
+            });
+
             return f;
         }
     }
@@ -247,6 +270,8 @@
             }
             nextPageSelectedAutomatic = false;
             prevPosition = position;
+
+            enableSaveShareButton(loadSatusMap.get(position));
         }
 
         @Override
diff --git a/app/src/main/java/org/wikipedia/random/RandomItemFragment.java 
b/app/src/main/java/org/wikipedia/random/RandomItemFragment.java
index 5aa5360..619fc74 100644
--- a/app/src/main/java/org/wikipedia/random/RandomItemFragment.java
+++ b/app/src/main/java/org/wikipedia/random/RandomItemFragment.java
@@ -39,10 +39,16 @@
     @Nullable private RbPageSummary summary;
     private int pagerPosition = -1;
     private View view;
+    private boolean loadComplete;
+    private RandomFragment.Callback callback;
 
     @NonNull
     public static RandomItemFragment newInstance() {
         return new RandomItemFragment();
+    }
+
+    public void setCallback(RandomFragment.Callback cb) {
+        callback = cb;
     }
 
     public void setPagerPosition(int position) {
@@ -51,6 +57,10 @@
 
     public int getPagerPosition() {
         return pagerPosition;
+    }
+
+    public boolean isLoadComplete() {
+        return loadComplete;
     }
 
     @Override
@@ -80,10 +90,13 @@
     }
 
     private void getRandomPage() {
-
         new 
RandomSummaryClient().request(WikipediaApp.getInstance().getWikiSite(), new 
RandomSummaryClient.Callback() {
             @Override
             public void onSuccess(@NonNull Call<RbPageSummary> call, @NonNull 
RbPageSummary pageSummary) {
+
+                loadComplete = true;
+                callback.onChildLoaded();
+
                 if (!isAdded()) {
                     return;
                 }

-- 
To view, visit https://gerrit.wikimedia.org/r/404617
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I4930582bff28331b5b1a002e1b5a0166e1ce769c
Gerrit-PatchSet: 4
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Cooltey <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Cooltey <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Sharvaniharan <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to