From a9b4846de928d3e1b6ff9eb3099f3953459a026b Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Sun, 29 Dec 2019 12:50:29 +0100 Subject: [PATCH] Fix avatar caching --- app/build.gradle | 4 +-- .../talk/newarch/di/module/NetworkModule.kt | 25 +++++++++++++++++-- .../talk/newarch/utils/NetworkUtils.kt | 6 ----- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e74118c69..d34558135 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -184,8 +184,8 @@ dependencies { // Koin AndroidX Experimental features implementation "org.koin:koin-androidx-ext:$koin_version" - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3' implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" implementation "com.github.stateless4j:stateless4j:2.6.0" diff --git a/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt b/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt index 557c98a47..05719669d 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt @@ -23,10 +23,13 @@ package com.nextcloud.talk.newarch.di.module import android.app.Application import android.content.Context import android.os.Build +import android.os.Build.VERSION.SDK_INT +import android.os.Build.VERSION_CODES.P import android.text.TextUtils import android.util.Log import coil.ImageLoader import coil.decode.GifDecoder +import coil.decode.ImageDecoderDecoder import coil.decode.SvgDecoder import com.github.aurae.retrofit2.LoganSquareConverterFactory import com.nextcloud.talk.BuildConfig @@ -43,6 +46,7 @@ import com.nextcloud.talk.newarch.utils.NetworkUtils.GetProxyRunnable import com.nextcloud.talk.newarch.utils.NetworkUtils.MagicAuthenticator import com.nextcloud.talk.utils.LoggingUtils import com.nextcloud.talk.utils.preferences.AppPreferences +import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder import com.nextcloud.talk.utils.ssl.MagicKeyManager import com.nextcloud.talk.utils.ssl.MagicTrustManager import io.reactivex.schedulers.Schedulers @@ -61,7 +65,6 @@ import java.net.CookiePolicy.ACCEPT_ALL import java.net.Proxy import java.security.* import java.security.cert.CertificateException -import java.util.* import java.util.concurrent.TimeUnit import javax.net.ssl.KeyManagerFactory import javax.net.ssl.SSLContext @@ -142,6 +145,20 @@ fun createOkHttpClient( } } + httpClient.addNetworkInterceptor { chain -> + var response = chain.proceed(chain.request()) + + if (response.request().url().encodedPath().contains("/avatar/")) { + AvatarStatusCodeHolder.getInstance().statusCode = response.code() + } + + if (response.code() == 201) { + response = response.newBuilder().code(200).build() + } + + response + } + httpClient.addInterceptor(NetworkUtils.HeadersInterceptor()) if (BuildConfig.DEBUG && !context.resources.getBoolean(R.bool.nc_is_debug)) { @@ -278,7 +295,11 @@ fun createImageLoader( crossfade(true) okHttpClient(okHttpClient) componentRegistry { - add(GifDecoder()) + if (SDK_INT >= P) { + add(ImageDecoderDecoder()) + } else { + add(GifDecoder()) + } add(SvgDecoder(androidApplication)) } } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt b/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt index cf2c7aaac..941df5e3e 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/utils/NetworkUtils.kt @@ -22,7 +22,6 @@ package com.nextcloud.talk.newarch.utils import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.preferences.AppPreferences -import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder import okhttp3.* import java.io.IOException import java.net.InetSocketAddress @@ -46,11 +45,6 @@ class NetworkUtils { val response = chain.proceed(request) - if (request.url().encodedPath().contains("/avatar/")) { - AvatarStatusCodeHolder.getInstance() - .statusCode = response.code() - } - return response } }