diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 98a43911..42834902 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -27,13 +27,21 @@ kotlin { api(compose.foundation) api(compose.material) api(projects.database) - implementation("com.alialbaali.kamel:kamel-image:0.2.1") } } val commonTest by getting - val androidMain by getting { dependencies { implementation(libs.androidx.browser) } } + val androidMain by getting { + dependencies { + implementation(libs.androidx.browser) + implementation(libs.coil.compose) + } + } val androidTest by getting { dependsOn(androidAndroidTestRelease) } - val desktopMain by getting + val desktopMain by getting { + dependencies { + implementation(libs.kamel.image) + } + } val desktopTest by getting } } diff --git a/common/src/androidMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt b/common/src/androidMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt new file mode 100644 index 00000000..9acbca6b --- /dev/null +++ b/common/src/androidMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt @@ -0,0 +1,28 @@ +package dev.msfjarvis.claw.common.ui + +import androidx.compose.foundation.Image +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import coil.annotation.ExperimentalCoilApi +import coil.compose.rememberImagePainter +import coil.transform.CircleCropTransformation + +@Composable +@OptIn(ExperimentalCoilApi::class) +actual fun NetworkImage( + url: String, + contentDescription: String, + modifier: Modifier, +) { + Image( + painter = rememberImagePainter( + data = url, + builder = { + transformations(CircleCropTransformation()) + crossfade(true) + }, + ), + contentDescription = contentDescription, + modifier = Modifier.then(modifier), + ) +} diff --git a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt new file mode 100644 index 00000000..fc97ff9f --- /dev/null +++ b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt @@ -0,0 +1,11 @@ +package dev.msfjarvis.claw.common.ui + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@Composable +expect fun NetworkImage( + url: String, + contentDescription: String, + modifier: Modifier, +) diff --git a/common/src/desktopMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt b/common/src/desktopMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt new file mode 100644 index 00000000..9af7de3a --- /dev/null +++ b/common/src/desktopMain/kotlin/dev/msfjarvis/claw/common/ui/composables.kt @@ -0,0 +1,24 @@ +package dev.msfjarvis.claw.common.ui + +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import io.kamel.image.KamelImage +import io.kamel.image.lazyImageResource + +@Composable +actual fun NetworkImage( + url: String, + contentDescription: String, + modifier: Modifier, +) { + KamelImage( + resource = lazyImageResource(url), + contentDescription = contentDescription, + modifier = Modifier.then(modifier), + crossfade = true, + ) +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e175c693..61ef751e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,6 +16,9 @@ androidx-appcompat = "androidx.appcompat:appcompat:1.4.0-alpha03" androidx-browser = "androidx.browser:browser:1.3.0" androidx-paging-compose = "androidx.paging:paging-compose:1.0.0-alpha12" +coil-compose = "io.coil-kt:coil-compose:1.3.2" +kamel-image = "com.alialbaali.kamel:kamel-image:0.2.1" + dagger-hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } dagger-hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" } dagger-hilt-core = { module = "com.google.dagger:hilt-core", version.ref = "hilt" }