Sharvaniharan has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/394631 )

Change subject: Fix OnThisDayPagesViewHolder crash
......................................................................

Fix OnThisDayPagesViewHolder crash

- App crash on null pages response fixed by adding a null check and removing 
any null pages.

Bug: T181668
Change-Id: I1a6061a625e73d485c66332e5558ae25c9ca629e
---
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
4 files changed, 35 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/31/394631/1

diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java 
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
index 1c7ea30..d771e95 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
@@ -9,6 +9,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 
 public class OnThisDay {
@@ -59,7 +60,14 @@
             return year;
         }
 
-        @NonNull public List<RbPageSummary> pages() {
+        @Nullable
+        public List<RbPageSummary> pages() {
+            Iterator iterator = pages.iterator();
+            while ((iterator.hasNext())) {
+                if (iterator.next() == null) {
+                    iterator.remove();
+                }
+            }
             return pages;
         }
     }
diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java 
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
index 363458f..151c644 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
@@ -1,6 +1,7 @@
 package org.wikipedia.feed.onthisday;
 
 import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
@@ -85,7 +86,7 @@
         return wiki;
     }
 
-    @NonNull public List<RbPageSummary> pages() {
+    @Nullable public List<RbPageSummary> pages() {
         return eventShownOnCard.pages();
     }
 
diff --git 
a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java 
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
index 835a65e..43c2285 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
@@ -117,10 +117,18 @@
     public void setCard(@NonNull OnThisDayCard card) {
         super.setCard(card);
         this.age = card.getAge();
-        pagesRecycler.setAdapter(new RecyclerAdapter(card.pages(), 
card.wiki()));
+        setPagesRecycler(card);
         header(card);
     }
 
+    private void setPagesRecycler(OnThisDayCard card) {
+        if (card.pages() != null) {
+            pagesRecycler.setAdapter(new RecyclerAdapter(card.pages(), 
card.wiki()));
+        } else {
+            pagesRecycler.setVisibility(GONE);
+        }
+    }
+
     @OnClick({R.id.more_events_layout, R.id.view_on_this_day_click_container}) 
void onMoreClick() {
         launchOnThisDayActivity();
     }
diff --git 
a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java 
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
index 683e245..c3b76ef 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
@@ -42,6 +42,7 @@
 import retrofit2.Callback;
 import retrofit2.Response;
 
+import static android.view.View.GONE;
 import static org.wikipedia.feed.onthisday.OnThisDayActivity.AGE;
 
 public class OnThisDayFragment extends Fragment implements 
DatePickerFragment.Callback {
@@ -145,7 +146,7 @@
                     return;
                 }
                 onThisDay = response.body();
-                progressBar.setVisibility(View.GONE);
+                progressBar.setVisibility(GONE);
                 eventsRecycler.setVisibility(View.VISIBLE);
                 updateRecyclerView();
                 updateTextView();
@@ -171,7 +172,7 @@
                     dayTextView.setVisibility(View.VISIBLE);
                 } else if (verticalOffset == 0) {
                     // Expanded
-                    dayTextView.setVisibility(View.GONE);
+                    dayTextView.setVisibility(GONE);
                 }
             }
         });
@@ -224,7 +225,7 @@
     @Override
     public void onDatePicked(int year, int month, int day) {
 
-        eventsRecycler.setVisibility(View.GONE);
+        eventsRecycler.setVisibility(GONE);
         progressBar.setVisibility(View.VISIBLE);
         date.set(year, month, day, 0, 0);
         requestEvents("" + (month + 1), "" + day);
@@ -287,11 +288,20 @@
         }
 
         public void setFields(final OnThisDay.Event event) {
-            pagesRecycler.setAdapter(new 
OnThisDayCardView.RecyclerAdapter(event.pages(), wiki));
+            setPagesRecycler(event);
             descTextView.setText(event.text());
             yearTextView.setText(DateUtil.yearToStringWithEra(event.year()));
             
yearsInfoTextView.setText(DateUtil.getYearDifferenceString(event.year()));
             
yearsInfoTextView.setBackground(ContextCompat.getDrawable(getContext(), 
R.drawable.button_shape_light_gray_corner_rounded));
+        }
+
+
+        private void setPagesRecycler(OnThisDay.Event event) {
+            if (event.pages() != null) {
+                pagesRecycler.setAdapter(new 
OnThisDayCardView.RecyclerAdapter(event.pages(), wiki));
+            } else {
+                pagesRecycler.setVisibility(GONE);
+            }
         }
 
         void setDarkView() {
@@ -307,7 +317,7 @@
         }
 
         void hidePadding() {
-            space.setVisibility(View.GONE);
+            space.setVisibility(GONE);
         }
     }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1a6061a625e73d485c66332e5558ae25c9ca629e
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Sharvaniharan <[email protected]>

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

Reply via email to