diff --git a/app/shared/src/androidMain/kotlin/dev/schlaubi/tonbrett/app/ImageLoader.kt b/app/shared/src/androidMain/kotlin/dev/schlaubi/tonbrett/app/ImageLoader.kt index e6214e2..0d75738 100644 --- a/app/shared/src/androidMain/kotlin/dev/schlaubi/tonbrett/app/ImageLoader.kt +++ b/app/shared/src/androidMain/kotlin/dev/schlaubi/tonbrett/app/ImageLoader.kt @@ -2,6 +2,17 @@ package dev.schlaubi.tonbrett.app +import android.os.Build import coil3.ComponentRegistry +import coil3.decode.BitmapFactoryDecoder +import coil3.gif.GifDecoder +import coil3.svg.SvgDecoder -internal actual fun ComponentRegistry.Builder.addPlatformComponents() {} +internal actual fun ComponentRegistry.Builder.addPlatformComponents() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + add(BitmapFactoryDecoder.Factory()) + } else { + add(GifDecoder.Factory()) + } + add(SvgDecoder.Factory()) +} diff --git a/app/shared/src/commonMain/kotlin/ImageLoader.kt b/app/shared/src/commonMain/kotlin/ImageLoader.kt index e61fecc..9b2349c 100644 --- a/app/shared/src/commonMain/kotlin/ImageLoader.kt +++ b/app/shared/src/commonMain/kotlin/ImageLoader.kt @@ -7,12 +7,12 @@ import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Modifier import coil3.ComponentRegistry import coil3.ImageLoader -import coil3.annotation.ExperimentalCoilApi import coil3.compose.AsyncImagePainter import coil3.compose.LocalPlatformContext import coil3.compose.rememberAsyncImagePainter import coil3.disk.DiskCache import coil3.memory.MemoryCache +import coil3.network.ktor.KtorNetworkFetcherFactory import coil3.request.ImageRequest import coil3.request.crossfade import dev.schlaubi.tonbrett.app.api.AppContext @@ -57,6 +57,7 @@ private fun OptionalWebImageInternal(url: String?, contentDescription: String?, } fun newImageLoader(appContext: AppContext): ImageLoader = ImageLoader.Builder(appContext.platformContext).components { + add(KtorNetworkFetcherFactory()) addPlatformComponents() }.memoryCache { MemoryCache.Builder() diff --git a/app/shared/src/skiaMain/kotlin/ImageLoader.kt b/app/shared/src/skiaMain/kotlin/ImageLoader.kt index 4a421dd..6784aba 100644 --- a/app/shared/src/skiaMain/kotlin/ImageLoader.kt +++ b/app/shared/src/skiaMain/kotlin/ImageLoader.kt @@ -3,6 +3,9 @@ package dev.schlaubi.tonbrett.app import coil3.ComponentRegistry +import coil3.decode.SkiaImageDecoder import kotlin.jvm.JvmName -internal actual fun ComponentRegistry.Builder.addPlatformComponents() {} +internal actual fun ComponentRegistry.Builder.addPlatformComponents() { + add(SkiaImageDecoder.Factory()) +} diff --git a/build.gradle.kts b/build.gradle.kts index 17bfe78..d2cfb95 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { allprojects { group = "dev.schlaubi.tonbrett" - version = "1.18.8" + version = "1.18.9" repositories { mavenCentral() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 02d7083..f05cf9a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,7 +16,7 @@ play-services-wearable = "18.1.0" horologist = "0.5.10" protobuf = "3.19.4" compose-compiler = "1.5.8-dev-k2.0.0-Beta2-99ed868a0f8" -coil = "3.0.0-alpha02" +coil = "3.0.0-alpha03" [libraries] kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version = "1.6.2" } @@ -88,7 +88,7 @@ horologist-datalayer = { group = "com.google.android.horologist", name = "horolo coil-compose = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coil" } coil-gif = { group = "io.coil-kt.coil3", name = "coil-gif", version.ref = "coil" } coil-svg = { group = "io.coil-kt.coil3", name = "coil-svg", version.ref = "coil" } -coil-network = { group = "io.coil-kt.coil3", name = "coil-network", version.ref = "coil" } +coil-network = { group = "io.coil-kt.coil3", name = "coil-network-ktor", version.ref = "coil" } kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }