[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Use displaytitle from server for link previews

2017-11-13 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/390853 )

Change subject: Use displaytitle from server for link previews
..


Use displaytitle from server for link previews

Prevents article title display inconsistencies by using the displaytitle
provided by the server response (and deferring adding the title to the
link preview until then). In practice, the delay should be barely user-
noticeable.

If the summary request fails, the app falls back to the old behavior in
the error callback.

This should also have the desirable effect of showing the true article
title in previews, with any redirects resolved.

Bug: T149429
Change-Id: I9030f5871250505e0e0399c94f2b857c30204db5
---
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
M app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
M app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
M app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.java
5 files changed, 42 insertions(+), 14 deletions(-)

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



diff --git 
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java 
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
index 03cb652..f2e2844 100644
--- a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
+++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
@@ -37,8 +37,8 @@
 */
 @Headers("x-analytics: preview=1")
 
@GET("w/api.php?action=query=json=2=="
-+ 
"=extracts%7Cpageimages=5==thumbnail%7Cname"
-+ "=any=" + Constants.PREFERRED_THUMB_SIZE)
++ 
"=extracts%7Cpageimages%7Cpageprops=5=thumbnail%7Cname"
++ "=any==" + 
Constants.PREFERRED_THUMB_SIZE)
 @NonNull Call summary(@NonNull @Query("titles") String 
title);
 
 /**
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java 
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
index ba2723f..f670ff7 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
@@ -29,6 +29,11 @@
 }
 
 @Override @Nullable
+public String getDisplayTitle() {
+return getFirstPage() == null ? null : 
getFirstPage().getDisplayTitle();
+}
+
+@Override @Nullable
 public String getExtract() {
 return getFirstPage() == null ? null : getFirstPage().extract;
 }
@@ -49,6 +54,7 @@
 
 private static class MwPage {
 @SuppressWarnings("unused") @Nullable private String title;
+@SuppressWarnings("unused") @Nullable private PageProps pageprops;
 @SuppressWarnings("unused") @Nullable private String extract;
 @SuppressWarnings("unused") @Nullable private Thumb thumbnail;
 
@@ -56,16 +62,31 @@
 public String getThumbnailUrl() {
 return thumbnail == null ? null : thumbnail.getUrl();
 }
+
+@Nullable
+public String getDisplayTitle() {
+return pageprops != null && pageprops.displayTitle() != null
+? pageprops.displayTitle()
+: title;
+}
 }
 
 /**
  * For the thumbnail URL of the page
  */
-public static class Thumb {
+static class Thumb {
 @SuppressWarnings("unused") private String source;
 
-public String getUrl() {
+String getUrl() {
 return source;
 }
 }
+
+static class PageProps {
+@SuppressWarnings("unused") @Nullable private String displaytitle;
+
+String displayTitle() {
+return displaytitle;
+}
+}
 }
diff --git a/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java 
b/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
index 0e92533..80c40a9 100644
--- a/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
+++ b/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
@@ -11,6 +11,7 @@
 boolean hasError();
 @Nullable ServiceError getError();
 @Nullable String getTitle();
+@Nullable String getDisplayTitle();
 @Nullable String getExtract();
 @Nullable String getThumbnailUrl();
 }
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java 
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
index ac27029..bb7af41 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
@@ -3,8 +3,6 @@
 import android.support.annotation.NonNull;
 import 

[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Use displaytitle from server for link previews

2017-11-11 Thread Mholloway (Code Review)
Mholloway has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/390853 )

Change subject: Use displaytitle from server for link previews
..

Use displaytitle from server for link previews

Prevents article title display inconsistencies by using the displaytitle
provided by the server response (and deferring adding the title to the
link preview until then). In practice, the change should barely user-
noticeable.

If the summary request fails, the app falls back to the old behavior in
the error callback.

This should also have the desirable effect of showing the true article
title in previews, with any redirects resolved.

Bug: T149429
Change-Id: I9030f5871250505e0e0399c94f2b857c30204db5
---
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
M app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
M app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
M app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.java
5 files changed, 41 insertions(+), 14 deletions(-)


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

diff --git 
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java 
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
index 03cb652..f2e2844 100644
--- a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
+++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
@@ -37,8 +37,8 @@
 */
 @Headers("x-analytics: preview=1")
 
@GET("w/api.php?action=query=json=2=="
-+ 
"=extracts%7Cpageimages=5==thumbnail%7Cname"
-+ "=any=" + Constants.PREFERRED_THUMB_SIZE)
++ 
"=extracts%7Cpageimages%7Cpageprops=5=thumbnail%7Cname"
++ "=any==" + 
Constants.PREFERRED_THUMB_SIZE)
 @NonNull Call summary(@NonNull @Query("titles") String 
title);
 
 /**
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java 
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
index ba2723f..f670ff7 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwQueryPageSummary.java
@@ -29,6 +29,11 @@
 }
 
 @Override @Nullable
+public String getDisplayTitle() {
+return getFirstPage() == null ? null : 
getFirstPage().getDisplayTitle();
+}
+
+@Override @Nullable
 public String getExtract() {
 return getFirstPage() == null ? null : getFirstPage().extract;
 }
@@ -49,6 +54,7 @@
 
 private static class MwPage {
 @SuppressWarnings("unused") @Nullable private String title;
+@SuppressWarnings("unused") @Nullable private PageProps pageprops;
 @SuppressWarnings("unused") @Nullable private String extract;
 @SuppressWarnings("unused") @Nullable private Thumb thumbnail;
 
@@ -56,16 +62,31 @@
 public String getThumbnailUrl() {
 return thumbnail == null ? null : thumbnail.getUrl();
 }
+
+@Nullable
+public String getDisplayTitle() {
+return pageprops != null && pageprops.displayTitle() != null
+? pageprops.displayTitle()
+: title;
+}
 }
 
 /**
  * For the thumbnail URL of the page
  */
-public static class Thumb {
+static class Thumb {
 @SuppressWarnings("unused") private String source;
 
-public String getUrl() {
+String getUrl() {
 return source;
 }
 }
+
+static class PageProps {
+@SuppressWarnings("unused") @Nullable private String displaytitle;
+
+String displayTitle() {
+return displaytitle;
+}
+}
 }
diff --git a/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java 
b/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
index 0e92533..80c40a9 100644
--- a/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
+++ b/app/src/main/java/org/wikipedia/dataclient/page/PageSummary.java
@@ -11,6 +11,7 @@
 boolean hasError();
 @Nullable ServiceError getError();
 @Nullable String getTitle();
+@Nullable String getDisplayTitle();
 @Nullable String getExtract();
 @Nullable String getThumbnailUrl();
 }
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java 
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
index ac27029..bb7af41 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageSummary.java
@@ -3,8 +3,6 @@
 import android.support.annotation.NonNull;
 import