From 0fda36b9b3cd698a0d43f7041324dad234e8252c Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 2 Apr 2019 16:06:07 +0200 Subject: [PATCH 1/3] Add preference to allow mobile updates of images --- app/src/main/res/xml/preferences_network.xml | 9 +++++---- .../de/danoeh/antennapod/core/UpdateManager.java | 5 +++++ .../antennapod/core/glide/ApOkHttpUrlLoader.java | 16 ++++++++++------ .../core/preferences/UserPreferences.java | 13 +++++++++++-- .../antennapod/core/util/NetworkUtils.java | 10 +++++++--- core/src/main/res/values/arrays.xml | 12 ++++++++++++ core/src/main/res/values/strings.xml | 3 +++ 7 files changed, 53 insertions(+), 15 deletions(-) diff --git a/app/src/main/res/xml/preferences_network.xml b/app/src/main/res/xml/preferences_network.xml index c37a99465..59dd0c51b 100644 --- a/app/src/main/res/xml/preferences_network.xml +++ b/app/src/main/res/xml/preferences_network.xml @@ -16,10 +16,11 @@ - { @Override public Response intercept(Chain chain) throws IOException { - if (NetworkUtils.isDownloadAllowed()) { + if (NetworkUtils.isImageAllowed()) { return chain.proceed(chain.request()); } else { - return null; + return new Response.Builder() + .code(420) + .protocol(Protocol.HTTP_2) + .message("Dummy response") + .body(new RealResponseBody(null, 0, null)) + .request(chain.request()) + .build(); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 1feecd849..eb07a0977 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -77,7 +77,8 @@ public class UserPreferences { // Network private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; public static final String PREF_UPDATE_INTERVAL = "prefAutoUpdateIntervall"; - private static final String PREF_MOBILE_UPDATE = "prefMobileUpdate"; + public static final String PREF_MOBILE_UPDATE_OLD = "prefMobileUpdate"; + public static final String PREF_MOBILE_UPDATE = "prefMobileUpdateAllowed"; public static final String PREF_EPISODE_CLEANUP = "prefEpisodeCleanup"; public static final String PREF_PARALLEL_DOWNLOADS = "prefParallelDownloads"; public static final String PREF_EPISODE_CACHE_SIZE = "prefEpisodeCacheSize"; @@ -380,8 +381,16 @@ public class UserPreferences { } } + public static String getMobileUpdatesEnabled() { + return prefs.getString(PREF_MOBILE_UPDATE, "images"); + } + public static boolean isAllowMobileUpdate() { - return prefs.getBoolean(PREF_MOBILE_UPDATE, false); + return getMobileUpdatesEnabled().equals("everything"); + } + + public static boolean isAllowMobileImages() { + return isAllowMobileUpdate() || getMobileUpdatesEnabled().equals("images"); } public static int getParallelDownloads() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java index b34ba196d..9bdd375ce 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java @@ -90,9 +90,13 @@ public class NetworkUtils { return info != null && info.isConnected(); } - public static boolean isDownloadAllowed() { - return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered(); - } + public static boolean isDownloadAllowed() { + return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered(); + } + + public static boolean isImageAllowed() { + return UserPreferences.isAllowMobileImages() || !NetworkUtils.isNetworkMetered(); + } private static boolean isNetworkMetered() { ConnectivityManager connManager = (ConnectivityManager) context diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index 157b040e1..6d310e0e5 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -55,6 +55,18 @@ -1 + + @string/pref_mobileUpdate_nothing + @string/pref_mobileUpdate_images + @string/pref_mobileUpdate_everything + + + + nothing + images + everything + + @string/episode_cleanup_queue_removal 0 diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 374cd7360..e47f7f198 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -373,6 +373,9 @@ Bluetooth Reconnect Mobile Updates Allow updates over the mobile data connection + Nothing + Images only + Everything Refreshing Flattr settings Flattr sign-in From 6fe171fac95fe80999a2c006b67f654d2fb906ca Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 2 Apr 2019 16:06:39 +0200 Subject: [PATCH 2/3] Use ApOkHttpUrlLoader for all images Probably got broken during my Glide update. When using append or prepend, Glide uses the next one in the chain if ApOkHttpUrlLoader blocks --- .../java/de/danoeh/antennapod/core/glide/ApGlideModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java index ec10b78aa..552c1b691 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java @@ -31,6 +31,6 @@ public class ApGlideModule extends AppGlideModule { @Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { - registry.append(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory()); + registry.replace(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory()); } } From 788e75515ad997835494267474b5a1e294814f63 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 3 Apr 2019 17:29:44 +0200 Subject: [PATCH 3/3] Review changes --- .../main/java/de/danoeh/antennapod/core/UpdateManager.java | 2 +- .../de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java | 6 +++--- .../danoeh/antennapod/core/preferences/UserPreferences.java | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java index fb1990370..1b4cbc0ea 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java @@ -72,7 +72,7 @@ class UpdateManager { } // else 0 or special negative values, no change needed } if (oldVersionCode < 1070197) { - if (prefs.getBoolean(UserPreferences.PREF_MOBILE_UPDATE_OLD, false)) { + if (prefs.getBoolean("prefMobileUpdate", false)) { prefs.edit().putString(UserPreferences.PREF_MOBILE_UPDATE, "everything").apply(); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java index 06dea83f3..2e742e979 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java @@ -113,10 +113,10 @@ class ApOkHttpUrlLoader implements ModelLoader { return chain.proceed(chain.request()); } else { return new Response.Builder() - .code(420) .protocol(Protocol.HTTP_2) - .message("Dummy response") - .body(new RealResponseBody(null, 0, null)) + .code(420) + .message("Policy Not Fulfilled") + .body(ResponseBody.create(null, new byte[0])) .request(chain.request()) .build(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index eb07a0977..805f0c1b6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -77,7 +77,6 @@ public class UserPreferences { // Network private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; public static final String PREF_UPDATE_INTERVAL = "prefAutoUpdateIntervall"; - public static final String PREF_MOBILE_UPDATE_OLD = "prefMobileUpdate"; public static final String PREF_MOBILE_UPDATE = "prefMobileUpdateAllowed"; public static final String PREF_EPISODE_CLEANUP = "prefEpisodeCleanup"; public static final String PREF_PARALLEL_DOWNLOADS = "prefParallelDownloads";