Dbrant has submitted this change and it was merged.
Change subject: Read more suggestions for main page
......................................................................
Read more suggestions for main page
On the main page, display three did you mean results based
on a single entry from the user's history.
We're looking at the last history entry that is not of source
main page or random.
Change-Id: Ia4568e6a1f3e350de05629af954ad8a5649b05cd
---
M wikipedia/src/main/java/org/wikipedia/page/Page.java
M
wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
A
wikipedia/src/main/java/org/wikipedia/page/bottomcontent/MainPageReadMoreTopicTask.java
M wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
4 files changed, 94 insertions(+), 10 deletions(-)
Approvals:
Dbrant: Looks good to me, approved
diff --git a/wikipedia/src/main/java/org/wikipedia/page/Page.java
b/wikipedia/src/main/java/org/wikipedia/page/Page.java
index 9b3e407..4dbd72c 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/Page.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/Page.java
@@ -57,9 +57,7 @@
}
public boolean couldHaveReadMoreSection() {
- return !getPageProperties().isMainPage()
- && !getTitle().isFilePage()
- && !getTitle().isSpecial();
+ return (!getTitle().isFilePage() && !getTitle().isSpecial());
}
@Override
diff --git
a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
index 04e77c3..25d4b76 100644
---
a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
+++
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
@@ -1,6 +1,7 @@
package org.wikipedia.page.bottomcontent;
import android.text.Html;
+import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -191,7 +192,7 @@
public void beginLayout() {
setupAttribution();
if (parentFragment.getPage().couldHaveReadMoreSection()) {
- requestReadMoreItems(activity.getLayoutInflater());
+ preRequestReadMoreItems(activity.getLayoutInflater());
} else {
bottomContentContainer.findViewById(R.id.read_more_container).setVisibility(View.GONE);
layoutContent();
@@ -259,19 +260,46 @@
}
}
- private void requestReadMoreItems(final LayoutInflater layoutInflater) {
- new SuggestionsTask(app.getAPIForSite(pageTitle.getSite()),
pageTitle.getSite(),
- pageTitle.getPrefixedText()) {
+ private void preRequestReadMoreItems(final LayoutInflater layoutInflater) {
+ if (parentFragment.getPage().isMainPage()) {
+ new MainPageReadMoreTopicTask(activity) {
+ @Override
+ public void onFinish(PageTitle myTitle) {
+ requestReadMoreItems(layoutInflater, myTitle);
+ }
+
+ @Override
+ public void onCatch(Throwable caught) {
+ // Read More titles are expendable.
+ Log.w(TAG, "Error while getting Read More topic for main
page.", caught);
+ // but lay out the bottom content anyway:
+ layoutContent();
+ }
+ }.execute();
+ } else {
+ requestReadMoreItems(layoutInflater, pageTitle);
+ }
+ }
+
+ private void requestReadMoreItems(final LayoutInflater layoutInflater,
+ final PageTitle myTitle) {
+ if (myTitle == null || TextUtils.isEmpty(myTitle.getPrefixedText())) {
+ hideReadMore();
+ layoutContent();
+ return;
+ }
+ new SuggestionsTask(app.getAPIForSite(myTitle.getSite()),
myTitle.getSite(),
+ myTitle.getPrefixedText()) {
@Override
public void onFinish(SearchResults results) {
readMoreItems = results;
if (!readMoreItems.getPageTitles().isEmpty()) {
// If there are results, set up section and make sure it's
visible
setupReadMoreSection(layoutInflater, readMoreItems);
- readMoreContainer.setVisibility(View.VISIBLE);
+ showReadMore();
} else {
// If there's no results, just hide the section
- readMoreContainer.setVisibility(View.GONE);
+ hideReadMore();
}
layoutContent();
}
@@ -286,6 +314,14 @@
}.execute();
}
+ private void hideReadMore() {
+ readMoreContainer.setVisibility(View.GONE);
+ }
+
+ private void showReadMore() {
+ readMoreContainer.setVisibility(View.VISIBLE);
+ }
+
public PageTitle getTitle() {
return pageTitle;
}
diff --git
a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/MainPageReadMoreTopicTask.java
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/MainPageReadMoreTopicTask.java
new file mode 100644
index 0000000..74ebc2f
--- /dev/null
+++
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/MainPageReadMoreTopicTask.java
@@ -0,0 +1,51 @@
+package org.wikipedia.page.bottomcontent;
+
+import android.content.ContentProviderClient;
+import android.content.Context;
+import android.database.Cursor;
+import android.os.RemoteException;
+
+import org.wikipedia.PageTitle;
+import org.wikipedia.concurrency.SaneAsyncTask;
+import org.wikipedia.history.HistoryEntry;
+
+/**
+ * Get a Read More topic for the main page. This is looking at the history
table.
+ * We're looking at the last history entry that is not of source main page or
random.
+ */
+public class MainPageReadMoreTopicTask extends SaneAsyncTask<PageTitle> {
+ private final Context context;
+
+ public MainPageReadMoreTopicTask(Context context) {
+ super(SaneAsyncTask.SINGLE_THREAD);
+ this.context = context;
+ }
+
+ @Override
+ public PageTitle performTask() throws Throwable {
+ Cursor c = getInterestedHistoryEntry();
+ if (c.getCount() > 0) {
+ c.moveToFirst();
+ final HistoryEntry historyEntry =
HistoryEntry.PERSISTENCE_HELPER.fromCursor(c);
+ return historyEntry.getTitle();
+ }
+ return null;
+ }
+
+ private android.database.Cursor getInterestedHistoryEntry() {
+ ContentProviderClient client = context.getContentResolver()
+
.acquireContentProviderClient(HistoryEntry.PERSISTENCE_HELPER.getBaseContentURI());
+ try {
+ return client.query(
+ HistoryEntry.PERSISTENCE_HELPER.getBaseContentURI(),
+ null,
+ "source != ? AND source != ? ",
+ new String[]
{Integer.toString(HistoryEntry.SOURCE_MAIN_PAGE),
+ Integer.toString(HistoryEntry.SOURCE_RANDOM)},
+ "timestamp DESC");
+ } catch (RemoteException e) {
+ // This shouldn't really be happening
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git
a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
index cfbd40c..71edaf1 100644
--- a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
@@ -27,7 +27,6 @@
this.app = WikipediaApp.getInstance();
}
-
@Override
public RequestBuilder buildRequest(Api api) {
RequestBuilder builder = super.buildRequest(api);
--
To view, visit https://gerrit.wikimedia.org/r/192353
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia4568e6a1f3e350de05629af954ad8a5649b05cd
Gerrit-PatchSet: 5
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits