Dbrant has submitted this change and it was merged.

Change subject: Remove main and disambiguation pages from "read more" section
......................................................................


Remove main and disambiguation pages from "read more" section

Bug: T95365
Change-Id: Iacaa689e8f8760ea1609160c0fc5d568eff1ccb0
---
M wikipedia/src/main/java/org/wikipedia/page/PageProperties.java
M wikipedia/src/main/java/org/wikipedia/page/PageTitle.java
M wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
M wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java
R 
wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
M wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
6 files changed, 67 insertions(+), 16 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved



diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java
index b7f6282..90f32c0 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java
@@ -25,6 +25,7 @@
     private final String editProtectionStatus;
     private final int languageCount;
     private final boolean isMainPage;
+    private final boolean isDisambiguationPage;
     private final String leadImageUrl;
     private final String leadImageName;
     private SimpleDateFormat sdf = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT);
@@ -74,6 +75,7 @@
                 || json.optString("editable").equals("true");
 
         isMainPage = json.has("mainpage");
+        isDisambiguationPage = json.has("disambiguation");
     }
 
     public int getPageId() {
@@ -108,6 +110,10 @@
         return isMainPage;
     }
 
+    public boolean isDisambiguationPage() {
+        return isDisambiguationPage;
+    }
+
     public String getLeadImageUrl() {
         return leadImageUrl;
     }
@@ -131,6 +137,7 @@
         parcel.writeInt(languageCount);
         parcel.writeInt(canEdit ? 1 : 0);
         parcel.writeInt(isMainPage ? 1 : 0);
+        parcel.writeInt(isDisambiguationPage ? 1 : 0);
         parcel.writeString(leadImageUrl);
         parcel.writeString(leadImageName);
     }
@@ -145,6 +152,7 @@
         languageCount = in.readInt();
         canEdit = in.readInt() == 1;
         isMainPage = in.readInt() == 1;
+        isDisambiguationPage = in.readInt() == 1;
         leadImageUrl = in.readString();
         leadImageName = in.readString();
     }
@@ -178,6 +186,7 @@
                 && languageCount == that.languageCount
                 && canEdit == that.canEdit
                 && isMainPage == that.isMainPage
+                && isDisambiguationPage == that.isDisambiguationPage
                 && TextUtils.equals(editProtectionStatus, 
that.editProtectionStatus)
                 && TextUtils.equals(leadImageUrl, that.leadImageUrl)
                 && TextUtils.equals(leadImageName, that.leadImageName);
@@ -190,6 +199,7 @@
         result = 31 * result + (editProtectionStatus != null ? 
editProtectionStatus.hashCode() : 0);
         result = 31 * result + languageCount;
         result = 31 * result + (isMainPage ? 1 : 0);
+        result = 31 * result + (isDisambiguationPage ? 1 : 0);
         result = 31 * result + (leadImageUrl != null ? leadImageUrl.hashCode() 
: 0);
         result = 31 * result + (leadImageName != null ? 
leadImageName.hashCode() : 0);
         result = 31 * result + (canEdit ? 1 : 0);
@@ -224,6 +234,9 @@
             if (isMainPage) {
                 json.put("mainpage", "");
             }
+            if (isDisambiguationPage) {
+                json.put("disambiguation", "");
+            }
             if (leadImageUrl != null) {
                 JSONObject thumbObject = new JSONObject();
                 thumbObject.put("url", leadImageUrl);
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java
index 7776464..8b921dc 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java
@@ -47,13 +47,20 @@
     private String thumbUrl;
     private final Site site;
     private String description = null;
+    private PageProperties properties = null;
 
     public PageTitle(final String namespace, final String text, final String 
fragment, final String thumbUrl, final Site site) {
         this.namespace = namespace;
         this.text = text;
         this.fragment = fragment;
-        this.thumbUrl = thumbUrl;
         this.site = site;
+        this.thumbUrl = thumbUrl;
+    }
+
+    public PageTitle(final String text, final Site site, final String 
thumbUrl, final String description, final PageProperties properties) {
+        this(text, site, thumbUrl);
+        this.properties = properties;
+        this.description = description;
     }
 
     public PageTitle(final String text, final Site site, final String 
thumbUrl, final String description) {
@@ -133,6 +140,22 @@
         return getPrefixedText().replace("_", " ");
     }
 
+    public boolean hasProperties() {
+        return properties != null;
+    }
+
+    public PageProperties getProperties() {
+        return properties;
+    }
+
+    public boolean isMainPage() {
+        return hasProperties() && properties.isMainPage();
+    }
+
+    public boolean isDisambiguationPage() {
+        return hasProperties() && properties.isDisambiguationPage();
+    }
+
     /** Please keep the ID stable. */
     public String getIdentifier() {
         return Utils.md5string(toIdentifierJSON().toString());
@@ -142,10 +165,10 @@
     private JSONObject toIdentifierJSON() {
         try {
             JSONObject json = new JSONObject();
-            json.put("site", site.getDomain());
             json.put("namespace", getNamespace());
             json.put("text", getText());
             json.put("fragment", getFragment());
+            json.put("site", site.getDomain());
             return json;
         } catch (JSONException e) {
             // This will also never happen
@@ -156,6 +179,9 @@
     public JSONObject toJSON() {
         try {
             JSONObject json = toIdentifierJSON();
+            if (hasProperties()) {
+                json.put("properties", getProperties().toJSON());
+            }
             json.put("thumbUrl", getThumbUrl());
             json.put("description", getDescription());
             return json;
@@ -166,10 +192,11 @@
     }
 
     public PageTitle(JSONObject json) {
-        this.site = new Site(json.optString("site"));
         this.namespace = json.optString("namespace", null);
-        this.fragment = json.optString("fragment", null);
         this.text = json.optString("text", null);
+        this.fragment = json.optString("fragment", null);
+        this.site = json.has("site") ? new Site(json.optString("site")) : null;
+        this.properties = json.has("properties") ? new 
PageProperties(json.optJSONObject("properties")) : null;
         this.thumbUrl = json.optString("thumbUrl", null);
         this.description = json.optString("description", null);
     }
@@ -272,6 +299,7 @@
         text = in.readString();
         fragment = in.readString();
         site = in.readParcelable(Site.class.getClassLoader());
+        properties = in.readParcelable(PageProperties.class.getClassLoader());
         thumbUrl = in.readString();
         description = in.readString();
     }
@@ -282,6 +310,7 @@
         parcel.writeString(text);
         parcel.writeString(fragment);
         parcel.writeParcelable(site, flags);
+        parcel.writeParcelable(properties, flags);
         parcel.writeString(thumbUrl);
         parcel.writeString(description);
     }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
index daaadac..71367cc 100755
--- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
@@ -17,7 +17,7 @@
 import org.wikipedia.editing.EditSectionActivity;
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.interlanguage.LangLinksActivity;
-import org.wikipedia.page.bottomcontent.BottomContentHandlerOld;
+import org.wikipedia.page.bottomcontent.BottomContentHandler;
 import org.wikipedia.page.bottomcontent.BottomContentInterface;
 import org.wikipedia.page.gallery.GalleryActivity;
 import org.wikipedia.page.leadimages.LeadImagesHandler;
@@ -417,7 +417,7 @@
         searchBarHideHandler = ((PageActivity) 
getActivity()).getSearchBarHideHandler();
         searchBarHideHandler.setScrollView(webView);
 
-        bottomContentHandler = new BottomContentHandlerOld(this, bridge, 
webView, linkHandler,
+        bottomContentHandler = new BottomContentHandler(this, bridge, webView, 
linkHandler,
                 (ViewGroup) 
getView().findViewById(R.id.bottom_content_container));
 
         if (ApiUtil.hasHoneyComb()) {
diff --git a/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java 
b/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java
index b2039ca..0ebe64d 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java
@@ -44,7 +44,9 @@
         List<PageTitle> results = searchResults.getPageTitles();
         for (int i = 0, count = 0; i < results.size() && count < maxItems; 
i++) {
             final PageTitle res = results.get(i);
-            if (!title.equalsIgnoreCase(res.getPrefixedText()) && 
(!requireThumbnail || res.getThumbUrl() != null)) {
+            if (!title.equalsIgnoreCase(res.getPrefixedText())
+                    && (!requireThumbnail || res.getThumbUrl() != null)
+                    && !(res.isMainPage() || res.isDisambiguationPage())) {
                 filteredResults.add(res);
                 count++;
             }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandlerOld.java
 
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
similarity index 96%
rename from 
wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandlerOld.java
rename to 
wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
index 2a5cb26..89a89ae 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandlerOld.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
@@ -39,7 +39,7 @@
 
 import java.util.List;
 
-public class BottomContentHandlerOld implements BottomContentInterface,
+public class BottomContentHandler implements BottomContentInterface,
                                                 
ObservableWebView.OnScrollChangeListener,
                                                 
ObservableWebView.OnContentHeightChangedListener {
     private static final String TAG = "BottomContentHandler";
@@ -62,9 +62,9 @@
     private SuggestedPagesFunnel funnel;
     private SearchResults readMoreItems;
 
-    public BottomContentHandlerOld(PageViewFragmentInternal parentFragment,
-                                   CommunicationBridge bridge, 
ObservableWebView webview,
-                                   LinkHandler linkHandler, ViewGroup 
hidingView) {
+    public BottomContentHandler(PageViewFragmentInternal parentFragment,
+                                CommunicationBridge bridge, ObservableWebView 
webview,
+                                LinkHandler linkHandler, ViewGroup hidingView) 
{
         this.parentFragment = parentFragment;
         this.bridge = bridge;
         this.webView = webview;
@@ -288,7 +288,7 @@
             return;
         }
         final int maxResultItems = 3;
-        final int numRequestItems = 4;
+        final int numRequestItems = 5;
         new SuggestionsTask(app.getAPIForSite(myTitle.getSite()), 
myTitle.getSite(),
                 myTitle.getPrefixedText(), numRequestItems, maxResultItems,
                 
(int)(parentFragment.getActivity().getResources().getDimension(R.dimen.leadImageWidth)
 / displayDensity), false) {
@@ -297,7 +297,7 @@
                 readMoreItems = results;
                 if (!readMoreItems.getPageTitles().isEmpty()) {
                     // If there are results, set up section and make sure it's 
visible
-                    setupReadMoreSection(layoutInflater, readMoreItems);
+                    setUpReadMoreSection(layoutInflater, readMoreItems);
                     showReadMore();
                 } else {
                     // If there's no results, just hide the section
@@ -333,7 +333,7 @@
         funnel = new SuggestedPagesFunnel(app, pageTitle.getSite(), 0);
     }
 
-    private void setupReadMoreSection(LayoutInflater layoutInflater, final 
SearchResults results) {
+    private void setUpReadMoreSection(LayoutInflater layoutInflater, final 
SearchResults results) {
         final ReadMoreAdapter adapter = new ReadMoreAdapter(layoutInflater, 
results.getPageTitles());
         readMoreList.setAdapter(adapter);
         readMoreList.setOnItemClickListener(new 
AdapterView.OnItemClickListener() {
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java 
b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
index 8387cb7..488b089 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
@@ -12,6 +12,8 @@
 import org.mediawiki.api.json.RequestBuilder;
 import org.json.JSONException;
 import org.json.JSONObject;
+import org.wikipedia.page.PageProperties;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -43,7 +45,8 @@
     public RequestBuilder buildRequest(Api api) {
         final String maxResultsString = Integer.toString(maxResults);
         final RequestBuilder req = api.action("query")
-                .param("prop", "pageterms|pageimages")
+                .param("prop", "pageterms|pageimages|pageprops")
+                .param("ppprop", "mainpage|disambiguation")
                 .param("wbptterms", "description") // only interested in 
Wikidata description
                 .param("generator", "search")
                 .param("gsrsearch", searchTerm)
@@ -134,7 +137,11 @@
                     description = Utils.capitalizeFirstChar(arr.getString(0));
                 }
             }
-            pageTitles.add(new PageTitle(item.getString("title"), site, 
thumbUrl, description));
+            PageProperties properties = null;
+            if (item.has("pageprops")) {
+                properties = new 
PageProperties(item.getJSONObject("pageprops"));
+            }
+            pageTitles.add(new PageTitle(item.getString("title"), site, 
thumbUrl, description, properties));
         }
         return new SearchResults(pageTitles, nextContinueOffset, null);
     }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Iacaa689e8f8760ea1609160c0fc5d568eff1ccb0
Gerrit-PatchSet: 11
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <mhollo...@wikimedia.org>
Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>
Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org>
Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org>
Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to