From 0025782986798bc23eabf270eec2351b0af1dbc2 Mon Sep 17 00:00:00 2001 From: "Thomas W." Date: Mon, 3 Feb 2025 17:55:30 +0100 Subject: [PATCH] refactor: upgrade to Coil3 (#7052) --- app/build.gradle.kts | 1 + .../github/libretube/helpers/ImageHelper.kt | 24 ++++++++++++------- gradle/libs.versions.toml | 5 ++-- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9193c4634..4681fe13d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -136,6 +136,7 @@ dependencies { /* Coil */ coreLibraryDesugaring(libs.desugaring) implementation(libs.coil) + implementation(libs.coil.network.okhttp) /* Room */ ksp(libs.room.compiler) diff --git a/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt b/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt index aad9373ef..bbfa0dc93 100644 --- a/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt +++ b/app/src/main/java/com/github/libretube/helpers/ImageHelper.kt @@ -6,12 +6,16 @@ import android.graphics.Color import android.graphics.drawable.Drawable import android.net.Uri import android.widget.ImageView -import androidx.core.graphics.drawable.toBitmapOrNull import androidx.core.net.toUri -import coil.ImageLoader -import coil.disk.DiskCache -import coil.request.CachePolicy -import coil.request.ImageRequest +import coil3.ImageLoader +import coil3.asDrawable +import coil3.disk.DiskCache +import coil3.disk.directory +import coil3.network.okhttp.OkHttpNetworkFetcherFactory +import coil3.request.CachePolicy +import coil3.request.ImageRequest +import coil3.request.crossfade +import coil3.toBitmap import com.github.libretube.BuildConfig import com.github.libretube.constants.PreferenceKeys import com.github.libretube.extensions.toAndroidUri @@ -46,8 +50,10 @@ object ImageHelper { imageLoader = ImageLoader.Builder(context) .crossfade(true) - .okHttpClient { - httpClient.build() + .components { + add( + OkHttpNetworkFetcherFactory(httpClient.build()) + ) } .apply { if (maxCacheSize.isEmpty()) { @@ -110,14 +116,14 @@ object ImageHelper { .data(url) .build() - return imageLoader.execute(request).drawable?.toBitmapOrNull() + return imageLoader.execute(request).image?.toBitmap() } private fun getImageWithCallback(context: Context, url: String?, onSuccess: (Drawable) -> Unit) { val request = ImageRequest.Builder(context) .data(url) .target { drawable -> - onSuccess(drawable) + onSuccess(drawable.asDrawable(context.resources)) } .build() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1c64f5dc1..6c45c8836 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ espresso = "3.6.1" workRuntime = "2.9.1" retrofit = "2.11.0" desugaring = "2.1.4" -coil = "2.7.0" +coil = "3.0.4" room = "2.6.1" kotlinxSerialization = "1.6.3" kotlinxDatetime = "0.6.1" @@ -62,7 +62,8 @@ newpipeextractor = { module = "com.github.teamnewpipe:NewPipeExtractor", version square-retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } converter-kotlinx-serialization = { group = "com.squareup.retrofit2", name = "converter-kotlinx-serialization", version.ref = "retrofit" } desugaring = { group = "com.android.tools", name = "desugar_jdk_libs_nio", version.ref = "desugaring" } -coil = { group = "io.coil-kt", name = "coil", version.ref="coil" } +coil = { group = "io.coil-kt.coil3", name = "coil", version.ref = "coil" } +coil-network-okhttp = { group = "io.coil-kt.coil3", name = "coil-network-okhttp", version.ref = "coil"} lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycle" } lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle" } lifecycle-livedata = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycle" }