[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Advise users when they are reading an article from an offlin...

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

Change subject: Advise users when they are reading an article from an offline 
compilation
..


Advise users when they are reading an article from an offline compilation

* Shows a toast with the date downloaded upon loading the article
* Substitutes the footer "last modified" HTML with a download date string

Bug: T166652
Change-Id: I7b95f830224023493c860b8099f1563daf53
---
M app/src/main/java/org/wikipedia/offline/Compilation.java
M app/src/main/java/org/wikipedia/offline/OfflineManager.java
M app/src/main/java/org/wikipedia/page/Page.java
M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
M app/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
M app/src/main/java/org/wikipedia/util/DateUtil.java
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
M app/src/test/java/org/wikipedia/offline/OfflineManagerTest.java
9 files changed, 88 insertions(+), 14 deletions(-)

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



diff --git a/app/src/main/java/org/wikipedia/offline/Compilation.java 
b/app/src/main/java/org/wikipedia/offline/Compilation.java
index 03d7c9a..ec354dd 100644
--- a/app/src/main/java/org/wikipedia/offline/Compilation.java
+++ b/app/src/main/java/org/wikipedia/offline/Compilation.java
@@ -57,6 +57,10 @@
 return "";
 }
 
+public long timestamp() {
+return file.lastModified();
+}
+
 @NonNull public String description() {
 try {
 return reader.getZimDescription();
diff --git a/app/src/main/java/org/wikipedia/offline/OfflineManager.java 
b/app/src/main/java/org/wikipedia/offline/OfflineManager.java
index 6aeb69b..aa51a0d 100644
--- a/app/src/main/java/org/wikipedia/offline/OfflineManager.java
+++ b/app/src/main/java/org/wikipedia/offline/OfflineManager.java
@@ -98,11 +98,11 @@
 return null;
 }
 
-@NonNull public String getHtmlForTitle(@NonNull String title) throws 
IOException {
+@NonNull public HtmlResult getHtmlForTitle(@NonNull String title) throws 
IOException {
 for (Compilation c : compilations) {
 ByteArrayOutputStream stream = c.getDataForTitle(title);
 if (stream != null) {
-return stream.toString("utf-8");
+return new HtmlResult(c, stream.toString("utf-8"));
 }
 }
 throw new IOException("Content not found in any compilation for " + 
title);
@@ -135,6 +135,24 @@
 this.compilations = compilations;
 }
 
+public static class HtmlResult {
+@NonNull private String html;
+@NonNull private Compilation comp;
+
+public HtmlResult(@NonNull Compilation comp, @NonNull String html) {
+this.html = html;
+this.comp = comp;
+}
+
+public Compilation compilation() {
+return comp;
+}
+
+public String html() {
+return html;
+}
+}
+
 private OfflineManager() {
 }
 }
diff --git a/app/src/main/java/org/wikipedia/page/Page.java 
b/app/src/main/java/org/wikipedia/page/Page.java
index e3db2fd..30836a7 100755
--- a/app/src/main/java/org/wikipedia/page/Page.java
+++ b/app/src/main/java/org/wikipedia/page/Page.java
@@ -6,6 +6,7 @@
 
 import org.wikipedia.settings.RbSwitch;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -18,6 +19,8 @@
 @NonNull private final PageTitle title;
 @NonNull private final List sections;
 @NonNull private final PageProperties pageProperties;
+
+@Nullable private Date compilationDownloadDate;
 
 /**
  * An indicator what payload version the page content was originally 
retrieved from.
@@ -90,6 +93,18 @@
 return !isMainPage() && getTitle().namespace() == Namespace.MAIN;
 }
 
+public boolean isFromOfflineCompilation() {
+return compilationDownloadDate != null;
+}
+
+@Nullable public Date getCompilationDownloadDate() {
+return compilationDownloadDate;
+}
+
+public void setCompilationDownloadDate(@NonNull Date date) {
+this.compilationDownloadDate = date;
+}
+
 /** For old PHP API */
 public void addRemainingSections(List remainingSections) {
 sections.addAll(remainingSections);
diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java 
b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
index 6cdd65d..47911cf 100644
--- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
@@ -54,6 +54,7 @@
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -435,9 +436,13 @@
 try {
  

[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Advise users when they are reading an article from an offlin...

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

Change subject: Advise users when they are reading an article from an offline 
compilation
..

Advise users when they are reading an article from an offline compilation

* Shows a toast with the date downloaded upon loading the article
* Substitutes the footer "last modified" HTML with a download date string

Bug: T166652
Change-Id: I7b95f830224023493c860b8099f1563daf53
---
M app/src/main/java/org/wikipedia/offline/Compilation.java
M app/src/main/java/org/wikipedia/offline/OfflineManager.java
M app/src/main/java/org/wikipedia/page/Page.java
M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
M app/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
M app/src/main/java/org/wikipedia/util/DateUtil.java
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
M app/src/test/java/org/wikipedia/offline/OfflineManagerTest.java
9 files changed, 88 insertions(+), 14 deletions(-)


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

diff --git a/app/src/main/java/org/wikipedia/offline/Compilation.java 
b/app/src/main/java/org/wikipedia/offline/Compilation.java
index 03d7c9a..ec354dd 100644
--- a/app/src/main/java/org/wikipedia/offline/Compilation.java
+++ b/app/src/main/java/org/wikipedia/offline/Compilation.java
@@ -57,6 +57,10 @@
 return "";
 }
 
+public long timestamp() {
+return file.lastModified();
+}
+
 @NonNull public String description() {
 try {
 return reader.getZimDescription();
diff --git a/app/src/main/java/org/wikipedia/offline/OfflineManager.java 
b/app/src/main/java/org/wikipedia/offline/OfflineManager.java
index 6aeb69b..b6dd4e7 100644
--- a/app/src/main/java/org/wikipedia/offline/OfflineManager.java
+++ b/app/src/main/java/org/wikipedia/offline/OfflineManager.java
@@ -98,11 +98,11 @@
 return null;
 }
 
-@NonNull public String getHtmlForTitle(@NonNull String title) throws 
IOException {
+@NonNull public HtmlResult getHtmlForTitle(@NonNull String title) throws 
IOException {
 for (Compilation c : compilations) {
 ByteArrayOutputStream stream = c.getDataForTitle(title);
 if (stream != null) {
-return stream.toString("utf-8");
+return new HtmlResult(stream.toString("utf-8"), c.timestamp());
 }
 }
 throw new IOException("Content not found in any compilation for " + 
title);
@@ -135,6 +135,24 @@
 this.compilations = compilations;
 }
 
+public static class HtmlResult {
+@NonNull private String html;
+private long timestamp;
+
+public HtmlResult(@NonNull String html, long timestamp) {
+this.html = html;
+this.timestamp = timestamp;
+}
+
+public String html() {
+return html;
+}
+
+public long timestamp() {
+return timestamp;
+}
+}
+
 private OfflineManager() {
 }
 }
diff --git a/app/src/main/java/org/wikipedia/page/Page.java 
b/app/src/main/java/org/wikipedia/page/Page.java
index e3db2fd..a3f9a28 100755
--- a/app/src/main/java/org/wikipedia/page/Page.java
+++ b/app/src/main/java/org/wikipedia/page/Page.java
@@ -6,6 +6,7 @@
 
 import org.wikipedia.settings.RbSwitch;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -18,6 +19,8 @@
 @NonNull private final PageTitle title;
 @NonNull private final List sections;
 @NonNull private final PageProperties pageProperties;
+
+@Nullable private Date zimDownloadDate;
 
 /**
  * An indicator what payload version the page content was originally 
retrieved from.
@@ -90,6 +93,18 @@
 return !isMainPage() && getTitle().namespace() == Namespace.MAIN;
 }
 
+public boolean isFromZimCompilation() {
+return zimDownloadDate != null;
+}
+
+@Nullable public Date getZimDownloadDate() {
+return zimDownloadDate;
+}
+
+public void setZimDownloadDate(@NonNull Date date) {
+this.zimDownloadDate = date;
+}
+
 /** For old PHP API */
 public void addRemainingSections(List remainingSections) {
 sections.addAll(remainingSections);
diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java 
b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
index 6cdd65d..f06ddd0 100644
--- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
@@ -54,6 +54,7 @@
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -435,9 +436,13 @@
 try {
 Page page = model.getPage();