Fix avatar caching

This commit is contained in:
Mario Danic 2019-12-29 12:50:29 +01:00 committed by Mario Đanić
parent b3bb2d6adb
commit a9b4846de9
3 changed files with 25 additions and 10 deletions

View File

@ -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"

View File

@ -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))
}
}

View File

@ -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
}
}