Selaa lähdekoodia

add coil and preload images disk cache

MrOzOn 5 vuotta sitten
vanhempi
commit
1194bf24d1

+ 3 - 0
feature_splash/build.gradle

@@ -51,6 +51,9 @@ dependencies {
     implementation timber
     implementation navigationFragment
     implementation retrofit
+    implementation coil
+    implementation coilBase
+    implementation coilSvg
 
 //    implementation 'androidx.core:core-ktx:1.3.1'
     implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

+ 25 - 1
feature_splash/src/main/java/com/mrozon/feature_splash/data/PreloadDataRepositoryImp.kt

@@ -1,11 +1,19 @@
 package com.mrozon.feature_splash.data
 
+import android.content.Context
+import android.graphics.Insets.add
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.Transformations
+import coil.ImageLoader
+import coil.decode.SvgDecoder
+import coil.imageLoader
+import coil.request.CachePolicy
+import coil.request.ImageRequest
 import com.mrozon.core_api.db.HealthDiaryDao
 import com.mrozon.core_api.entity.User
 import com.mrozon.core_api.mapper.MeasureTypeToMeasureTypeDbMapper
 import com.mrozon.core_api.mapper.UserToUserDbMapper
+import com.mrozon.core_api.network.HealthDiaryService.Companion.ENDPOINT
 import com.mrozon.core_api.network.model.toMeasureType
 import com.mrozon.core_api.network.model.toPerson
 import com.mrozon.utils.network.Result
@@ -20,9 +28,16 @@ class PreloadDataRepositoryImp @Inject constructor(
     private val dao: HealthDiaryDao,
     private val remoteDataSource: PreloadDataRemoteDataSource,
     private val mapper: UserToUserDbMapper,
-    private val mapperMT: MeasureTypeToMeasureTypeDbMapper
+    private val mapperMT: MeasureTypeToMeasureTypeDbMapper,
+    private val context: Context
 ): PreloadDataRepository {
 
+    private val imageLoader = ImageLoader.Builder(context)
+        .componentRegistry {
+            add(SvgDecoder(context))
+        }
+        .build()
+
     override fun getPreloadData(): Flow<Result<User?>> {
         return flow {
             emit(Result.loading())
@@ -30,6 +45,7 @@ class PreloadDataRepositoryImp @Inject constructor(
             if (networkResult.status == Result.Status.SUCCESS) {
                 val data = networkResult.data!!
                 val measureTypes = data.map { measureType ->
+                    preloadNetworkImage(measureType.url)
                     measureType.toMeasureType()
                 }
                 val measureTypesDb = mapperMT.map(measureTypes)
@@ -47,4 +63,12 @@ class PreloadDataRepositoryImp @Inject constructor(
         }
     }
 
+    private fun preloadNetworkImage(url: String){
+        val request = ImageRequest.Builder(context)
+            .data(ENDPOINT+url)
+            .memoryCachePolicy(CachePolicy.DISABLED)
+            .build()
+        imageLoader.enqueue(request)
+    }
+
 }

+ 5 - 0
scripts/deps_versions.gradle

@@ -25,6 +25,7 @@ ext {
     androidXCoreTestVersion = "2.1.0"
     androidXTestVersion = "1.1.0"
     securityCryptoVersion = "1.1.0-alpha02"
+    coilVersion = "1.0.0"
 
     // DI
     dagger = "com.google.dagger:dagger:$daggerVersion"
@@ -75,4 +76,8 @@ ext {
     kotlinStdlib = "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
     //Crytpo
     securityCrypto = "androidx.security:security-crypto:$securityCryptoVersion"
+    //Coil
+    coil = "io.coil-kt:coil:$coilVersion"
+    coilBase = "io.coil-kt:coil-base:$coilVersion"
+    coilSvg = "io.coil-kt:coil-svg:$coilVersion"
 }