Skip to content

Commit 106cb27

Browse files
authored
Merge pull request #19 from jarroyoesp/feature/update-deps
Task: Update Kotlin Multiplatform to 1.7.1 and deps
2 parents 0058725 + 1bc6cf0 commit 106cb27

File tree

19 files changed

+4492
-4743
lines changed

19 files changed

+4492
-4743
lines changed

.idea/compiler.xml

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[![CI-MASTER](https://github.com/jarroyoesp/ComposeMultiplatformApp/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/jarroyoesp/ComposeMultiplatformApp/actions/workflows/ci.yml)
2-
[![Latest release](https://img.shields.io/github/v/release/JetBrains/compose-multiplatform?color=blue&label=Compose%20multiplatform)](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.7.0)
2+
[![Latest release](https://img.shields.io/github/v/release/JetBrains/compose-multiplatform?color=blue&label=Compose%20multiplatform)](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.7.1)
33
![Kotlin Version](https://img.shields.io/badge/Kotlin-2.0.21-blue?logo=kotlin&logoColor=white)
44
<div align="center">
55
<img alt="Compose multiplatform charts" src="./screenshots/compose_multiplatform_logo.png"/>
@@ -43,7 +43,7 @@ Current supported Platforms are:
4343
- [Kotlin Multiplatform Navigation](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-navigation-routing.html): Provides navigation components for Kotlin Multiplatform projects using Compose.
4444
- [Kotlin Multiplatform ViewModel](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-viewmodel.html): Manages UI-related data and state in Kotlin Multiplatform projects using Compose.
4545
- [ConstraintLayout Multiplatform](https://github.com/Lavmee/constraintlayout-compose-multiplatform): Brings ConstraintLayout functionality to Kotlin Multiplatform projects with Compose.
46-
- [Image Loader - Kamel](https://github.com/Kamel-Media/Kamel): Efficient image loading library for Compose multiplatform projects.
46+
- [Coil](https://coil-kt.github.io/coil/): Efficient image loading library for Compose multiplatform projects.
4747
- [Logger](https://github.com/touchlab/Kermit): Logging library for Kotlin Multiplatform projects.
4848
- [Unit Tests](https://github.com/junit-team/junit5): Automated tests to verify the behavior of individual code units.
4949

app/versions/dependencies/debugAndroidTestRuntimeClasspathDependencies.txt

+301-300
Large diffs are not rendered by default.

app/versions/dependencies/debugRuntimeClasspathDependencies.txt

+1,040-1,064
Large diffs are not rendered by default.

app/versions/dependencies/debugUnitTestRuntimeClasspathDependencies.txt

+1,054-1,145
Large diffs are not rendered by default.

app/versions/dependencies/releaseRuntimeClasspathDependencies.txt

+1,019-1,043
Large diffs are not rendered by default.

app/versions/dependencies/releaseUnitTestRuntimeClasspathDependencies.txt

+1,033-1,124
Large diffs are not rendered by default.

app/versions/mergedManifests/debug/processDebugManifest/AndroidManifest.xml

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<uses-sdk
66
android:minSdkVersion="24"
7-
android:targetSdkVersion="34" />
7+
android:targetSdkVersion="35" />
88

99
<uses-permission android:name="android.permission.INTERNET" />
1010
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -51,9 +51,6 @@
5151
android:name="androidx.startup.InitializationProvider"
5252
android:authorities="com.jarroyo.composeapp.debug.androidx-startup"
5353
android:exported="false" >
54-
<meta-data
55-
android:name="io.kamel.core.ApplicationContextInitializer"
56-
android:value="androidx.startup" />
5754
<meta-data
5855
android:name="androidx.emoji2.text.EmojiCompatInitializer"
5956
android:value="androidx.startup" />

app/versions/mergedManifests/release/processReleaseManifest/AndroidManifest.xml

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<uses-sdk
66
android:minSdkVersion="24"
7-
android:targetSdkVersion="34" />
7+
android:targetSdkVersion="35" />
88

99
<uses-permission android:name="android.permission.INTERNET" />
1010
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -52,9 +52,6 @@
5252
android:name="androidx.startup.InitializationProvider"
5353
android:authorities="com.jarroyo.composeapp.androidx-startup"
5454
android:exported="false" >
55-
<meta-data
56-
android:name="io.kamel.core.ApplicationContextInitializer"
57-
android:value="androidx.startup" />
5855
<meta-data
5956
android:name="androidx.emoji2.text.EmojiCompatInitializer"
6057
android:value="androidx.startup" />
144 Bytes
Binary file not shown.

build-conventions/src/main/kotlin/composeapp.config-conventions.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ val config = extensions.create<ConfigExt>("config").apply {
77
extensions.create<AndroidConfigExt>("android").apply {
88
accountType.convention("com.jarroyo.composeapp.auth")
99
applicationId.convention("com.jarroyo.composeapp")
10-
compileSdk.convention(34)
10+
compileSdk.convention(35)
1111
javaVersion.convention(JavaVersion.VERSION_17)
1212
minSdk.convention(24)
13-
targetSdk.convention(34)
13+
targetSdk.convention(35)
1414
}
1515

1616
extensions.create<ParamsConfigExt>("params").apply {

build-conventions/src/main/kotlin/composeapp.multiplatform-library-conventions.gradle.kts

+5-2
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,25 @@ kotlin {
6161
implementation(libs.androidx.lifecycle.runtime.compose)
6262
implementation(libs.androidx.navigation.compose)
6363
implementation(libs.calendar)
64+
implementation(libs.coil.compose)
6465
implementation(libs.coroutines.core)
65-
implementation(libs.kamel)
6666
implementation(libs.koin.annotations)
6767
implementation(libs.koin.compose)
6868
implementation(libs.koin.compose.viewmodel)
6969
implementation(libs.koin.core)
7070
implementation(libs.kotlin.result)
7171
implementation(libs.multiplatform.log)
72+
73+
implementation(libs.coil.compose.core)
74+
implementation(libs.coil.compose)
75+
implementation(libs.coil.network)
7276
}
7377

7478
commonTest.dependencies {
7579
api(libs.apollo.testing.support)
7680
api(libs.coroutines.test)
7781
api(libs.junit)
7882
api(libs.kotlin.test)
79-
// api(libs.kotlin.test.junit)
8083
}
8184

8285
val desktopMain by getting {

gradle/libs.versions.toml

+17-20
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ aboutlibraries = "11.2.3"
66
accompanist = "0.36.0"
77
agp = "8.1.4"
88
androidCompileSdk = "34"
9-
androidx-compose = "1.7.4"
9+
androidx-compose = "1.7.5"
1010
androidx-datastore = "1.1.1"
11-
androidx-lifecycle = "2.8.6"
12-
androidx-navigation = "2.8.3"
11+
androidx-lifecycle = "2.8.7"
12+
androidx-navigation = "2.8.4"
1313
androidx-room = "2.6.1"
14-
apollo = "4.0.1"
14+
apollo = "4.1.0"
15+
coil3 = "3.0.3"
1516
coroutines = "1.9.0"
1617
detekt = "1.23.7"
1718
diktat = "1.2.5"
@@ -25,16 +26,15 @@ koin = "4.0.0"
2526
koin-ksp = "1.4.0"
2627
kotlin = "2.0.21"
2728
kotlinpoet = "1.18.1"
28-
kotlin-multiplatform = "1.7.0"
29+
kotlin-multiplatform = "1.7.1"
2930
kotlin-result = "2.0.0"
3031
kotlinx-datetime="0.6.0"
31-
ksp = "2.0.21-1.0.25"
32+
ksp = "2.0.21-1.0.26"
3233
ktlint = "0.43.0"
33-
ktor = "2.3.12"
34+
ktor = "3.0.0"
3435
mockk = "1.13.13"
3536
okhttp = "4.12.0"
3637
prettier = "2.7.1"
37-
retrofit = "2.9.0"
3838
sqlDelight = "2.0.2"
3939

4040
[libraries]
@@ -48,22 +48,22 @@ accompanist-pager-indicators = { module = "com.google.accompanist:accompanist-pa
4848
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
4949
accompanist-placeholder = { module = "com.google.accompanist:accompanist-placeholder-material", version.ref = "accompanist" }
5050
accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }
51-
android-maps-utils = { module = "com.google.maps.android:android-maps-utils", version = "3.8.2" }
51+
android-maps-utils = { module = "com.google.maps.android:android-maps-utils", version = "3.9.0" }
5252
androidx-activity-compose = { module = "androidx.activity:activity-compose", version = "1.9.3" }
5353
androidx-appcompat = { module = "androidx.appcompat:appcompat", version = "1.7.0" }
5454
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "androidx-compose" }
5555
androidx-compose-layout = { module = "androidx.compose.foundation:foundation-layout", version.ref = "androidx-compose" }
5656
androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "androidx-compose" }
5757
androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "androidx-compose" }
58-
androidx-compose-material3 = { module = "androidx.compose.material3:material3", version = "1.3.0" }
58+
androidx-compose-material3 = { module = "androidx.compose.material3:material3", version = "1.3.1" }
5959
androidx-compose-runtime = { module = "androidx.compose.runtime:runtime", version.ref = "androidx-compose" }
6060
androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata", version.ref = "androidx-compose" }
6161
androidx-compose-test = { module = "androidx.compose.test:test-core", version.ref = "androidx-compose" }
6262
androidx-compose-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose" }
6363
androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "androidx-compose" }
6464
androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "androidx-compose" }
6565
androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "androidx-compose" }
66-
androidx-core-ktx = { module = "androidx.core:core-ktx", version = "1.13.1" }
66+
androidx-core-ktx = { module = "androidx.core:core-ktx", version = "1.15.0" }
6767
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version = "1.0.1" }
6868
androidx-customview = { module = "androidx.customview:customview", version = "1.2.0-alpha02" }
6969
androidx-customview-poolingcontainer = { module = "androidx.customview:customview-poolingcontainer", version = "1.0.0" }
@@ -79,7 +79,7 @@ androidx-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecy
7979
androidx-navigation-compose = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "jetbrains-navigation" }
8080
androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "androidx-navigation" }
8181
androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "androidx-navigation" }
82-
androidx-paging = { module = "androidx.paging:paging-compose", version = "3.3.2" }
82+
androidx-paging = { module = "androidx.paging:paging-compose", version = "3.3.4" }
8383
androidx-palette = { module = "androidx.palette:palette", version = "1.0.0" }
8484
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "androidx-room" }
8585
androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "androidx-room" }
@@ -99,15 +99,17 @@ apollo-cache = { module = "com.apollographql.apollo:apollo-normalized-cache", ve
9999
apollo-cache-sqlite = { module = "com.apollographql.apollo:apollo-normalized-cache-sqlite", version.ref = "apollo" }
100100
apollo-testing-support = { module = "com.apollographql.apollo:apollo-testing-support", version.ref = "apollo" }
101101
calendar = { module = "com.kizitonwose.calendar:compose-multiplatform", version = "2.5.4" }
102-
coil-compose = { module = "io.coil-kt:coil-compose", version = "2.7.0" }
102+
coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil3" }
103+
coil-compose-core = { module = "io.coil-kt.coil3:coil-compose-core", version.ref = "coil3" }
104+
coil-network = { module = "io.coil-kt.coil3:coil-network-ktor3", version = "3.0.4" }
103105
composecharts = { module = "io.github.bytebeats:compose-charts", version = "0.2.1" }
104106
compose-placeholder = { module = "com.eygraber:compose-placeholder", version = "1.0.8" }
105107
compose-webview = { module = "io.github.kevinnzou:compose-webview-multiplatform", version = "1.7.8" }
106108
coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" }
107109
coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
108110
coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "coroutines" }
109111
coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }
110-
desugar = { module = "com.android.tools:desugar_jdk_libs", version = "2.1.2" }
112+
desugar = { module = "com.android.tools:desugar_jdk_libs", version = "2.1.3" }
111113
detekt = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" }
112114
detekt-rules-compose = { module = "ru.kode:detekt-rules-compose", version = "1.4.0" }
113115
detekt-twitter-compose-rules = { module = "com.twitter.compose.rules:detekt", version = "0.0.26" }
@@ -117,7 +119,6 @@ hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", vers
117119
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" }
118120
hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version = "1.2.0" }
119121
junit = { module = "junit:junit", version = "4.13.2" }
120-
kamel = { module = "media.kamel:kamel-image", version = "0.9.5" }
121122
koin-android = {module = "io.insert-koin:koin-android", version = "3.5.3"}
122123
koin-annotations = {module = "io.insert-koin:koin-annotations", version.ref = "koin-ksp"}
123124
koin-compose-viewmodel = {module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin"}
@@ -158,9 +159,6 @@ okhttp3-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version
158159
play-core-ktx = { module = "com.google.android.play:core-ktx", version = "1.8.1" }
159160
play-services-maps = { module = "com.google.android.gms:play-services-maps", version = "19.0.0" }
160161
process-phoenix = { module = "com.jakewharton:process-phoenix", version = "3.0.0" }
161-
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
162-
retrofit-converter-scalars = { module = "com.squareup.retrofit2:converter-scalars", version = "2.11.0" }
163-
retrofit-kotlinx-serialization = { module = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter", version = "1.0.0" }
164162
robolectric = { module = "org.robolectric:robolectric", version = "4.13" }
165163
seismic = { module = "com.squareup:seismic", version = "1.0.3" }
166164
speeddial = { module = "com.leinardi.android:speed-dial.compose", version = "2.0.0-alpha01" }
@@ -174,7 +172,7 @@ tink = { module = "com.google.crypto.tink:tink-android", version = "1.15.0" }
174172

175173
# plugins
176174
plugin-aboutlibraries = { module = "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin", version.ref = "aboutlibraries" }
177-
plugin-android-gradle = { module = "com.android.tools.build:gradle", version = "8.7.1" }
175+
plugin-android-gradle = { module = "com.android.tools.build:gradle", version = "8.7.2" }
178176
plugin-androidcachefix = { module = "gradle.plugin.org.gradle.android:android-cache-fix-gradle-plugin", version = "3.0" }
179177
plugin-androidx-navigation-safeargs = { module = "androidx.navigation:navigation-safe-args-gradle-plugin", version.ref = "androidx-navigation" }
180178
plugin-appversioning = { module = "io.github.reactivecircus.appversioning:app-versioning-gradle-plugin", version = "1.3.2" }
@@ -192,7 +190,6 @@ plugin-spotless = { module = "com.diffplug.spotless:spotless-plugin-gradle", ver
192190
plugin-versions = "com.github.ben-manes:gradle-versions-plugin:0.51.0"
193191
plugin-versions-update = "nl.littlerobots.vcu:plugin:0.8.4"
194192
plugin-violation = { module = "se.bjurr.violations:violation-comments-to-github-gradle-plugin", version = "1.70.0" }
195-
androidx-test-ext-junit115 = { group = "androidx.test.ext", name = "junit", version.ref = "junit" }
196193

197194
[plugins]
198195
apollo = { id = "com.apollographql.apollo", version.ref = "apollo" }

modules/feature-home-shared/src/commonMain/kotlin/com/jarroyo/feature/home/shared/ui/HomeItem.kt

+11-17
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ import androidx.compose.foundation.layout.Box
55
import androidx.compose.foundation.layout.Column
66
import androidx.compose.foundation.layout.Row
77
import androidx.compose.foundation.layout.fillMaxWidth
8-
import androidx.compose.foundation.layout.heightIn
98
import androidx.compose.foundation.layout.padding
109
import androidx.compose.material.Card
11-
import androidx.compose.material.CircularProgressIndicator
1210
import androidx.compose.material.ExperimentalMaterialApi
1311
import androidx.compose.material.Icon
1412
import androidx.compose.material.MaterialTheme
@@ -18,16 +16,15 @@ import androidx.compose.material.icons.filled.Star
1816
import androidx.compose.runtime.Composable
1917
import androidx.compose.ui.Alignment
2018
import androidx.compose.ui.Modifier
21-
import androidx.compose.ui.layout.ContentScale
2219
import androidx.compose.ui.text.font.FontWeight
2320
import androidx.compose.ui.unit.dp
21+
import co.touchlab.kermit.Logger
22+
import coil3.compose.AsyncImage
2423
import com.jarroyo.composeapp.library.network.api.graphql.fragment.LaunchFragment
2524
import com.jarroyo.feature.home.shared.ext.format
2625
import com.jarroyo.feature.home.shared.ui.HomeContract.Event
2726
import com.jarroyo.library.ui.shared.component.placeholder
2827
import com.jarroyo.library.ui.shared.theme.Spacing
29-
import io.kamel.image.KamelImage
30-
import io.kamel.image.asyncPainterResource
3128
import kotlinx.datetime.TimeZone
3229
import kotlinx.datetime.toLocalDateTime
3330

@@ -49,18 +46,15 @@ fun HomeItem(
4946
Column(
5047
modifier = Modifier.fillMaxWidth(),
5148
) {
52-
KamelImage(
53-
resource = asyncPainterResource(item.links?.flickr_images?.firstOrNull().orEmpty()),
54-
contentDescription = null,
55-
modifier = Modifier
56-
.fillMaxWidth()
57-
.heightIn(0.dp, max = 50.dp)
58-
.placeholder(
59-
visible = placeholder,
60-
),
61-
contentScale = ContentScale.Crop,
62-
onLoading = { CircularProgressIndicator() },
63-
)
49+
item.links?.flickr_images?.firstOrNull()?.let { url ->
50+
AsyncImage(
51+
model = url,
52+
contentDescription = "",
53+
onError = { error ->
54+
Logger.d("AsyncImage onError: ${error.result.throwable}")
55+
},
56+
)
57+
}
6458
Column(
6559
modifier = Modifier.padding(Spacing.x02),
6660
verticalArrangement = Arrangement.spacedBy(4.dp),

modules/feature-home-shared/src/commonMain/kotlin/com/jarroyo/feature/home/shared/ui/launchdetail/LaunchDetailScreen.kt

+4-12
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.padding
99
import androidx.compose.foundation.rememberScrollState
1010
import androidx.compose.foundation.verticalScroll
1111
import androidx.compose.material.Button
12-
import androidx.compose.material.CircularProgressIndicator
1312
import androidx.compose.material.Icon
1413
import androidx.compose.material.IconButton
1514
import androidx.compose.material.Scaffold
@@ -23,18 +22,16 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack
2322
import androidx.compose.runtime.Composable
2423
import androidx.compose.runtime.LaunchedEffect
2524
import androidx.compose.runtime.remember
26-
import androidx.compose.ui.Alignment
2725
import androidx.compose.ui.Modifier
2826
import androidx.compose.ui.text.style.TextAlign
27+
import coil3.compose.AsyncImage
2928
import com.jarroyo.composeapp.library.network.api.graphql.fragment.LaunchFragment
3029
import com.jarroyo.composeapp.library.network.api.graphql.fragment.RocketFragment
3130
import com.jarroyo.feature.home.shared.ui.launchdetail.LaunchDetailContract.Effect
3231
import com.jarroyo.feature.home.shared.ui.launchdetail.LaunchDetailContract.Event
3332
import com.jarroyo.feature.home.shared.ui.launchdetail.LaunchDetailContract.State
3433
import com.jarroyo.library.ui.shared.component.placeholder
3534
import com.jarroyo.library.ui.shared.theme.Spacing
36-
import io.kamel.image.KamelImage
37-
import io.kamel.image.asyncPainterResource
3835
import kotlinx.coroutines.flow.Flow
3936
import kotlinx.coroutines.flow.collect
4037
import kotlinx.coroutines.flow.onEach
@@ -120,14 +117,9 @@ private fun DetailItem(
120117
modifier = Modifier.placeholder(placeholder)
121118
.clickable { sendEvent(Event.OnOpenUrl(launch?.links?.article_link.orEmpty())) },
122119
)
123-
KamelImage(
124-
resource = asyncPainterResource(
125-
launch?.links?.flickr_images?.firstOrNull().orEmpty(),
126-
),
127-
contentDescription = null,
128-
modifier = Modifier.fillMaxWidth().placeholder(placeholder),
129-
alignment = Alignment.TopCenter,
130-
onLoading = { CircularProgressIndicator() },
120+
AsyncImage(
121+
model = launch?.links?.flickr_images?.firstOrNull().orEmpty(),
122+
contentDescription = "",
131123
)
132124
}
133125
}

modules/library-network-api/build.gradle.kts

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ kotlin {
3838
api(libs.apollo)
3939
api(libs.apollo.adapters)
4040
api(libs.apollo.cache)
41-
api(libs.retrofit)
4241
implementation(libs.apollo.cache.sqlite)
4342
implementation(libs.kotlinx.serialization)
4443
}

0 commit comments

Comments
 (0)