diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java index fc62a644..734f5a62 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java @@ -72,10 +72,12 @@ public class AlbumSongListClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java index a90cf865..1b71f7ff 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java @@ -122,10 +122,12 @@ public class BrowsingClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java index ea7f7b42..ca90e546 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java @@ -57,10 +57,12 @@ public class MediaAnnotationClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java index fc9318f8..cb921ef9 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java @@ -48,10 +48,12 @@ public class MediaLibraryScanningClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java index 512bd1a6..44e6df45 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java @@ -47,10 +47,12 @@ public class MediaRetrievalClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java index 45419514..56830bab 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java @@ -64,10 +64,12 @@ public class PlaylistClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java index 5a958ef5..392af581 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java @@ -47,10 +47,12 @@ public class SearchingClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java index 1fae8058..1f09da80 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java @@ -47,10 +47,12 @@ public class SystemClient { } private OkHttpClient getOkHttpClient() { + CacheUtil cacheUtil = new CacheUtil(context); + return new OkHttpClient.Builder() .addInterceptor(getHttpLoggingInterceptor()) - .addInterceptor(CacheUtil.offlineInterceptor) - .addNetworkInterceptor(CacheUtil.onlineInterceptor) + .addInterceptor(cacheUtil.offlineInterceptor) + .addNetworkInterceptor(cacheUtil.onlineInterceptor) .cache(getCache()) .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java b/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java index 3137020b..89b0921f 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java @@ -1,22 +1,32 @@ package com.cappielloantonio.play.subsonic.utils; +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; + import okhttp3.Interceptor; import okhttp3.Request; public class CacheUtil { - public static Interceptor onlineInterceptor = chain -> { + private final Context context; + + public CacheUtil(Context context) { + this.context = context; + } + + public Interceptor onlineInterceptor = chain -> { okhttp3.Response response = chain.proceed(chain.request()); - int maxAge = 60; + int maxAge = 60; // 60 seconds return response.newBuilder() .header("Cache-Control", "public, max-age=" + maxAge) .removeHeader("Pragma") .build(); }; - public static Interceptor offlineInterceptor = chain -> { + public Interceptor offlineInterceptor = chain -> { Request request = chain.request(); - if (!true) { - int maxStale = 60 * 60 * 24 * 30; + if (!isConnected()) { + int maxStale = 60 * 60 * 24 * 30; // 30 days (60 seconds * 60 minutes * 24 hours * 30 days) request = request.newBuilder() .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale) .removeHeader("Pragma") @@ -24,4 +34,10 @@ public class CacheUtil { } return chain.proceed(request); }; + + private boolean isConnected(){ + ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); + return (netInfo != null && netInfo.isConnected()); + } }