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

Change subject: Add cache option to PageClient
......................................................................

Add cache option to PageClient

Bug: T156917
Change-Id: I1ab55a6d08f6d79693ce62f709a81f0cf17e1312
---
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
M app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
M app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
M app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageService.java
M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
M app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
8 files changed, 38 insertions(+), 19 deletions(-)


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

diff --git 
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java 
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
index c180257..bebe394 100644
--- a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
+++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
@@ -25,16 +25,18 @@
     }
 
     @SuppressWarnings("unchecked")
-    @NonNull @Override public Call<? extends PageLead> lead(@NonNull String 
title,
+    @NonNull @Override public Call<? extends PageLead> lead(@NonNull 
CacheOption cacheOption,
+                                                            @NonNull String 
title,
                                                             int 
leadThumbnailWidth,
                                                             boolean noImages) {
-        return service.lead(title, leadThumbnailWidth, optional(noImages));
+        return service.lead(cacheOption.save(), title, leadThumbnailWidth, 
optional(noImages));
     }
 
     @SuppressWarnings("unchecked")
-    @NonNull @Override public Call<? extends PageRemaining> sections(@NonNull 
String title,
+    @NonNull @Override public Call<? extends PageRemaining> sections(@NonNull 
CacheOption cacheOption,
+                                                                     @NonNull 
String title,
                                                                      boolean 
noImages) {
-        return service.sections(title, optional(noImages));
+        return service.sections(cacheOption.save(), title, optional(noImages));
     }
 
     /**
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 51ca18e..1463745 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
@@ -4,9 +4,11 @@
 import android.support.annotation.Nullable;
 
 import org.wikipedia.Constants;
+import org.wikipedia.dataclient.okhttp.cache.SaveHeader;
 
 import retrofit2.Call;
 import retrofit2.http.GET;
+import retrofit2.http.Header;
 import retrofit2.http.Headers;
 import retrofit2.http.Query;
 
@@ -52,7 +54,8 @@
             + 
"%7Cdescription%7Clastmodified%7Cnormalizedtitle%7Cdisplaytitle%7Cprotection"
             + 
"%7Ceditable%7Cpageprops&pageprops=wikibase_item&onlyrequestedsections=1"
             + 
"&sections=0&sectionprop=toclevel%7Cline%7Canchor&noheadings=true")
-    @NonNull Call<MwMobileViewPageLead> lead(@NonNull @Query("page") String 
title,
+    @NonNull Call<MwMobileViewPageLead> lead(@Header(SaveHeader.FIELD) boolean 
save,
+                                             @NonNull @Query("page") String 
title,
                                              @Query("thumbwidth") int 
leadThumbnailWidth,
                                              @Nullable @Query("noimages") 
Boolean noImages);
 
@@ -65,6 +68,7 @@
     @GET("w/api.php?action=mobileview&format=json&prop="
             + "text%7Csections&onlyrequestedsections=1&sections=1-"
             + "&sectionprop=toclevel%7Cline%7Canchor&noheadings=true")
-    @NonNull Call<MwMobileViewPageRemaining> sections(@NonNull @Query("page") 
String title,
+    @NonNull Call<MwMobileViewPageRemaining> 
sections(@Header(SaveHeader.FIELD) boolean save,
+                                                      @NonNull @Query("page") 
String title,
                                                       @Nullable 
@Query("noimages") Boolean noImages);
 }
diff --git a/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java 
b/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
index 7bcfbd8..503e52e 100644
--- a/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
+++ b/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
@@ -24,7 +24,9 @@
      * @param leadThumbnailWidth one of the bucket widths for the lead image
      * @param noImages add the noimages flag to the request if true
      */
-    @NonNull <T extends PageLead> Call<T> lead(@NonNull String title, int 
leadThumbnailWidth,
+    @NonNull <T extends PageLead> Call<T> lead(@NonNull CacheOption 
cacheOption,
+                                               @NonNull String title,
+                                               int leadThumbnailWidth,
                                                boolean noImages);
 
     /**
@@ -33,5 +35,7 @@
      * @param title the page title to be used including prefix
      * @param noImages add the noimages flag to the request if true
      */
-    @NonNull <T extends PageRemaining> Call<T> sections(@NonNull String title, 
boolean noImages);
+    @NonNull <T extends PageRemaining> Call<T> sections(@NonNull CacheOption 
cacheOption,
+                                                        @NonNull String title,
+                                                        boolean noImages);
 }
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java 
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
index e31de34..cb5e7d2 100644
--- a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
+++ b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
@@ -46,16 +46,18 @@
     }
 
     @SuppressWarnings("unchecked")
-    @NonNull @Override public Call<? extends PageLead> lead(@NonNull String 
title,
+    @NonNull @Override public Call<? extends PageLead> lead(@NonNull 
CacheOption cacheOption,
+                                                            @NonNull String 
title,
                                                             int 
leadThumbnailWidth,
                                                             boolean noImages) {
-        return service.lead(title, optional(noImages));
+        return service.lead(cacheOption.save(), title, optional(noImages));
     }
 
     @SuppressWarnings("unchecked")
-    @NonNull @Override public Call<? extends PageRemaining> sections(@NonNull 
String title,
+    @NonNull @Override public Call<? extends PageRemaining> sections(@NonNull 
CacheOption cacheOption,
+                                                                     @NonNull 
String title,
                                                                      boolean 
noImages) {
-        return service.sections(title, optional(noImages));
+        return service.sections(cacheOption.save(), title, optional(noImages));
     }
 
     /* Not defined in the PageClient interface since the Wiktionary definition 
endpoint exists only
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageService.java 
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageService.java
index e9e75cb..72467d5 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageService.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageService.java
@@ -3,12 +3,14 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 
+import org.wikipedia.dataclient.okhttp.cache.SaveHeader;
 import org.wikipedia.dataclient.restbase.RbDefinition;
 
 import java.util.Map;
 
 import retrofit2.Call;
 import retrofit2.http.GET;
+import retrofit2.http.Header;
 import retrofit2.http.Headers;
 import retrofit2.http.Path;
 import retrofit2.http.Query;
@@ -42,7 +44,8 @@
             ACCEPT_HEADER_MOBILE_SECTIONS
     })
     @GET("page/mobile-sections-lead/{title}")
-    @NonNull Call<RbPageLead> lead(@NonNull @Path("title") String title,
+    @NonNull Call<RbPageLead> lead(@Header(SaveHeader.FIELD) boolean save,
+                                   @NonNull @Path("title") String title,
                                    @Nullable @Query("noimages") Boolean 
noImages);
 
     /**
@@ -53,7 +56,8 @@
      */
     @Headers(ACCEPT_HEADER_MOBILE_SECTIONS)
     @GET("page/mobile-sections-remaining/{title}")
-    @NonNull Call<RbPageRemaining> sections(@NonNull @Path("title") String 
title,
+    @NonNull Call<RbPageRemaining> sections(@Header(SaveHeader.FIELD) boolean 
save,
+                                            @NonNull @Path("title") String 
title,
                                             @Nullable @Query("noimages") 
Boolean noImages);
 
     // todo: this Content Service-only endpoint is under page/ but that 
implementation detail should
diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java 
b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
index ef9393c..6cd8dcd 100644
--- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
@@ -21,6 +21,7 @@
 import org.wikipedia.bridge.CommunicationBridge;
 import org.wikipedia.database.contract.PageImageHistoryContract;
 import org.wikipedia.dataclient.ServiceError;
+import org.wikipedia.dataclient.page.PageClient;
 import org.wikipedia.dataclient.page.PageClientFactory;
 import org.wikipedia.dataclient.page.PageLead;
 import org.wikipedia.dataclient.page.PageRemaining;
@@ -242,8 +243,8 @@
         app.getSessionFunnel().leadSectionFetchStart();
         PageClientFactory
                 .create(model.getTitle().getWikiSite(), 
model.getTitle().namespace())
-                .lead(model.getTitle().getPrefixedText(), 
calculateLeadImageWidth(),
-                        !app.isImageDownloadEnabled())
+                .lead(PageClient.CacheOption.CACHE, 
model.getTitle().getPrefixedText(),
+                        calculateLeadImageWidth(), 
!app.isImageDownloadEnabled())
                 .enqueue(new retrofit2.Callback<PageLead>() {
                     @Override public void onResponse(Call<PageLead> call, 
Response<PageLead> rsp) {
                         app.getSessionFunnel().leadSectionFetchEnd();
@@ -610,7 +611,8 @@
         app.getSessionFunnel().restSectionsFetchStart();
         PageClientFactory
                 .create(model.getTitle().getWikiSite(), 
model.getTitle().namespace())
-                .sections(model.getTitle().getPrefixedText(), 
!app.isImageDownloadEnabled())
+                .sections(PageClient.CacheOption.CACHE, 
model.getTitle().getPrefixedText(),
+                        !app.isImageDownloadEnabled())
                 .enqueue(new retrofit2.Callback<PageRemaining>() {
                     @Override public void onResponse(Call<PageRemaining> call, 
Response<PageRemaining> rsp) {
                         app.getSessionFunnel().restSectionsFetchEnd();
diff --git 
a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java 
b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
index 4bda952..73ffb3e 100644
--- a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
+++ b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
@@ -40,7 +40,7 @@
     }
 
     @Override
-    protected void onHandleIntent(@NonNull Intent intent) {
+    protected void onHandleIntent(@Nullable Intent intent) {
         if (!DeviceUtil.isOnline(this)) {
             L.i("Device is offline; aborting sync service");
             return;
diff --git 
a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java 
b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
index 39762b4..cd1fcae 100644
--- a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
+++ b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
@@ -79,7 +79,8 @@
                 app.getWikiSite());
 
         getApiService(title)
-                .lead(title.getPrefixedText(), 
DimenUtil.calculateLeadImageWidth(),
+                .lead(PageClient.CacheOption.CACHE, title.getPrefixedText(),
+                        DimenUtil.calculateLeadImageWidth(),
                         !app.isImageDownloadEnabled())
                 .enqueue(new retrofit2.Callback<PageLead>() {
                     @Override public void onResponse(Call<PageLead> call, 
Response<PageLead> rsp) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1ab55a6d08f6d79693ce62f709a81f0cf17e1312
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
Gerrit-Reviewer: Sniedzielski <[email protected]>

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

Reply via email to