Skip to content

Commit 3cd6e38

Browse files
authored
Upgraded to Kotlin 2.0.0 (#13)
* Upgraded to Kotlin 2.0.0 * cleaned dependencies * use Compose Resources * cleaned code * replaced deprecated icons * corrected font resources for iOS
1 parent 8cc55d0 commit 3cd6e38

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+106
-93
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,7 @@ google-services.json
3434

3535
# Android Profiling
3636
*.hprof
37-
xcuserdata
37+
xcuserdata
38+
39+
*.klib
40+
.kotlin/metadata

androidApp/build.gradle.kts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
id("com.android.application")
33
kotlin("android")
4+
alias(libs.plugins.compose.compiler)
45
}
56

67
val versionNum: String? by project
@@ -27,9 +28,6 @@ android {
2728
buildFeatures {
2829
compose = true
2930
}
30-
composeOptions {
31-
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
32-
}
3331
packaging {
3432
resources {
3533
excludes += "/META-INF/{AL2.0,LGPL2.1}"
@@ -58,11 +56,11 @@ dependencies {
5856
implementation(libs.androidx.core.splashscreen)
5957
implementation(libs.androidx.tracing.ktx)
6058

61-
implementation("androidx.compose.ui:ui")
62-
implementation("androidx.compose.material:material")
63-
implementation("androidx.compose.material3:material3")
64-
implementation("androidx.compose.material3:material3-window-size-class")
65-
implementation("androidx.compose.ui:ui-tooling-preview")
59+
implementation(libs.androidx.ui)
60+
implementation(libs.androidx.material)
61+
implementation(libs.androidx.material3)
62+
implementation(libs.androidx.material3.window.size)
63+
implementation(libs.androidx.ui.tooling.preview)
6664

6765
implementation(libs.androidx.activity.compose)
6866
implementation(libs.accompanist.systemuicontroller)
@@ -71,13 +69,13 @@ dependencies {
7169
implementation(libs.koin.android)
7270

7371
implementation(platform(libs.firebase.bom))
74-
implementation("com.google.firebase:firebase-analytics-ktx")
72+
implementation(libs.firebase.analytics.ktx)
7573

7674
testImplementation(libs.junit)
7775
testImplementation(libs.koin.test)
7876
androidTestImplementation(libs.androidx.junit)
7977
androidTestImplementation(libs.androidx.espresso.core)
8078

8179
// androidTestImplementation("androidx.compose.ui:ui-test-junit4")
82-
debugImplementation("androidx.compose.ui:ui-tooling")
80+
debugImplementation(libs.androidx.ui.tooling)
8381
}

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
kotlin("multiplatform").version(libs.versions.kotlin).apply(false)
66
kotlin("plugin.serialization").version(libs.versions.kotlin).apply(false)
77
alias(libs.plugins.compose.multiplatform).apply(false)
8+
alias(libs.plugins.compose.compiler).apply(false)
89
alias(libs.plugins.ktlint).apply(false)
910
alias(libs.plugins.detekt).apply(false)
1011
}

desktopApp/.run/desktopApp.run.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<component name="ProjectRunConfigurationManager">
22
<configuration default="false" name="desktopApp" type="JetRunConfigurationType">
3+
<option name="ALTERNATIVE_JRE_PATH" value="BUNDLED" />
4+
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
35
<option name="MAIN_CLASS_NAME" value="MainKt" />
46
<module name="MultiplatformKickstarter.desktopApp.jvmMain" />
57
<shortenClasspath name="NONE" />

desktopApp/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat
33
plugins {
44
kotlin("multiplatform")
55
id("org.jetbrains.compose")
6+
alias(libs.plugins.compose.compiler)
67
}
78

89
kotlin {

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ multiplatformkickstarter.android.minSdk = 26
3232
multiplatformkickstarter.android.targetSdk = 34
3333

3434
multiplatformkickstarter.version.major = 1
35-
multiplatformkickstarter.version.minor = 4
35+
multiplatformkickstarter.version.minor = 5
3636
multiplatformkickstarter.version.patch = 0

gradle/libs.versions.toml

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
[versions]
2-
kotlin = "2.0.0-RC1"
3-
ktor-client = "2.3.10"
4-
ktor-server = "2.3.10"
2+
kotlin = "2.0.0"
3+
ktor-client = "2.3.11"
4+
ktor-server = "2.3.11"
55
multiplatform-settings = "1.0.0"
66
voyager = "1.0.0"
77
koin = "3.5.6"
88
koin-compose = "1.1.3"
99
junit = "4.13.2"
1010
androidGradlePlugin = "8.2.2"
11-
composeMultiplatform = "1.6.2"
12-
compose-compiler = "1.5.13-dev-k2.0.0-RC1-50f08dfa4b4"
11+
composeMultiplatform = "1.6.10"
1312
exposed = "0.37.3"
14-
skiko = "0.7.97"
13+
skiko = "0.8.4"
1514
ktlint = "11.5.1"
1615
detekt = "1.23.1"
17-
kotlinx-coroutines = "1.8.0"
16+
kotlinx-coroutines = "1.8.1"
1817
androidx-junit = "1.1.5"
1918
espressoCore = "3.5.1"
2019
accompanistSystemuicontroller = "0.32.0"
@@ -67,12 +66,20 @@ junit = { module = "junit:junit", version.ref = "junit" }
6766
androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCore" }
6867
androidx-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-junit" }
6968

69+
androidx-material = { module = "androidx.compose.material:material" }
70+
androidx-material3 = { module = "androidx.compose.material3:material3" }
71+
androidx-material3-window-size = { module = "androidx.compose.material3:material3-window-size-class" }
72+
androidx-ui = { module = "androidx.compose.ui:ui" }
73+
androidx-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
74+
androidx-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
75+
firebase-analytics-ktx = { module = "com.google.firebase:firebase-analytics-ktx" }
76+
7077
# iOS
7178
stately-common = { module = "co.touchlab:stately-common", version.ref = "touchlab" }
7279

7380
# Desktop
7481
koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin-compose" }
75-
kotlinx-coroutines-swingui = "org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.8.0"
82+
kotlinx-coroutines-swingui = "org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.8.1"
7683
ktor-client-java = { module = "io.ktor:ktor-client-java", version.ref = "ktor-client" }
7784
androidx-compose-ui-util = "androidx.compose.ui:ui-util:1.6.7"
7885

@@ -117,6 +124,8 @@ android-library = { id = "com.android.library", version.ref = "androidGradlePlug
117124
compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" }
118125
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
119126
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
127+
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
128+
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
120129

121130
#Backend
122131
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version = "kotlin" }

shared/build.gradle.kts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ plugins {
33
id("com.android.library")
44
id("org.jetbrains.compose")
55
kotlin("plugin.serialization")
6+
alias(libs.plugins.compose.compiler)
67
}
78

89
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class)
@@ -31,6 +32,13 @@ kotlin {
3132
}
3233

3334
sourceSets {
35+
all {
36+
languageSettings {
37+
optIn("org.jetbrains.compose.resources.ExperimentalResourceApi")
38+
optIn("androidx.compose.foundation.layout.ExperimentalLayoutApi")
39+
optIn("androidx.compose.material3.ExperimentalMaterial3Api")
40+
}
41+
}
3442
commonMain.dependencies {
3543
implementation(libs.skiko)
3644
implementation(compose.ui)
@@ -39,7 +47,6 @@ kotlin {
3947
implementation(compose.material3)
4048
implementation(compose.animation)
4149
implementation(compose.materialIconsExtended)
42-
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
4350
implementation(compose.components.resources)
4451
implementation(libs.kotlinx.serialization.json)
4552
implementation(libs.kotlinx.datetime)
@@ -106,3 +113,9 @@ android {
106113
targetCompatibility = JavaVersion.VERSION_17
107114
}
108115
}
116+
117+
compose.resources {
118+
publicResClass = true
119+
packageOfResClass = "com.multiplatformkickstarter.app.resources"
120+
generateResClass = always
121+
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/debugmenu/DebugMenuScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import androidx.compose.foundation.layout.width
1616
import androidx.compose.foundation.rememberScrollState
1717
import androidx.compose.foundation.verticalScroll
1818
import androidx.compose.material.icons.Icons
19-
import androidx.compose.material.icons.filled.ArrowBack
19+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
2020
import androidx.compose.material3.Button
2121
import androidx.compose.material3.Checkbox
2222
import androidx.compose.material3.CheckboxColors
@@ -139,7 +139,7 @@ class DebugMenuScreen : Screen {
139139
),
140140
navigationIcon = {
141141
IconButton(onClick = { onClose.invoke() }) {
142-
Icon(imageVector = Icons.Filled.ArrowBack, contentDescription = "Go back")
142+
Icon(imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Go back")
143143
}
144144
}
145145
)

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/loginsignup/EmailLoginScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.padding
1212
import androidx.compose.foundation.shape.RoundedCornerShape
1313
import androidx.compose.foundation.text.KeyboardOptions
1414
import androidx.compose.material.icons.Icons
15-
import androidx.compose.material.icons.filled.ArrowBack
15+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
1616
import androidx.compose.material3.Button
1717
import androidx.compose.material3.ButtonDefaults
1818
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -123,7 +123,7 @@ fun EmailLoginView(viewModel: EmailLoginViewModel, snackbarHostState: SnackbarHo
123123
navigationIcon = {
124124
IconButton(onClick = { currentNavigator.pop() }) {
125125
Icon(
126-
imageVector = Icons.Filled.ArrowBack,
126+
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
127127
contentDescription = localization.backLabel
128128
)
129129
}

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/loginsignup/EmailSignUpScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.padding
1212
import androidx.compose.foundation.shape.RoundedCornerShape
1313
import androidx.compose.foundation.text.KeyboardOptions
1414
import androidx.compose.material.icons.Icons
15-
import androidx.compose.material.icons.filled.ArrowBack
15+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
1616
import androidx.compose.material3.Button
1717
import androidx.compose.material3.ButtonDefaults
1818
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -111,7 +111,7 @@ fun EmailSignUpView(viewModel: EmailSignUpViewModel, snackbarHostState: Snackbar
111111
navigationIcon = {
112112
IconButton(onClick = { currentNavigator.pop() }) {
113113
Icon(
114-
imageVector = Icons.Filled.ArrowBack,
114+
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
115115
contentDescription = localization.backLabel
116116
)
117117
}

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/loginsignup/LoginSignUpLandingScreen.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@file:OptIn(ExperimentalMaterial3Api::class, ExperimentalResourceApi::class)
1+
@file:OptIn(ExperimentalMaterial3Api::class)
22

33
package com.multiplatformkickstarter.app.feature.loginsignup
44

@@ -34,12 +34,11 @@ import cafe.adriel.voyager.core.screen.Screen
3434
import cafe.adriel.voyager.navigator.LocalNavigator
3535
import cafe.adriel.voyager.navigator.currentOrThrow
3636
import com.multiplatformkickstarter.app.localization.getCurrentLocalization
37-
import com.multiplatformkickstarter.app.platform.Resources
37+
import com.multiplatformkickstarter.app.resources.Res
38+
import com.multiplatformkickstarter.app.resources.cat_dog
3839
import com.multiplatformkickstarter.app.ui.theme.MultiplatformKickstarterTheme
3940
import com.multiplatformkickstarter.app.ui.theme.Typography
40-
import org.jetbrains.compose.resources.DrawableResource
41-
import org.jetbrains.compose.resources.ExperimentalResourceApi
42-
import org.jetbrains.compose.resources.painterResource
41+
import org.jetbrains.compose.resources.vectorResource
4342

4443
class LoginSignUpLandingScreen : Screen {
4544
@Composable
@@ -76,7 +75,7 @@ fun LoginSignUpView() {
7675
horizontalAlignment = Alignment.CenterHorizontally
7776
) {
7877
Image(
79-
painterResource(DrawableResource(Resources.Drawables.catAndDog)),
78+
imageVector = vectorResource(Res.drawable.cat_dog),
8079
contentDescription = "",
8180
modifier = Modifier.size(150.dp)
8281
)

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/pets/MyPetsScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import androidx.compose.foundation.layout.padding
1414
import androidx.compose.foundation.rememberScrollState
1515
import androidx.compose.foundation.verticalScroll
1616
import androidx.compose.material.icons.Icons
17-
import androidx.compose.material.icons.filled.ArrowBack
17+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
1818
import androidx.compose.material3.ExperimentalMaterial3Api
1919
import androidx.compose.material3.Icon
2020
import androidx.compose.material3.IconButton
@@ -71,7 +71,7 @@ fun MyPetsScreenView(viewModel: MyPetsViewModel, localization: Localization, onC
7171
TopAppBar(
7272
navigationIcon = {
7373
IconButton(onClick = { onClose.invoke() }) {
74-
Icon(imageVector = Icons.Filled.ArrowBack, contentDescription = "Go back")
74+
Icon(imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Go back")
7575
}
7676
},
7777
title = {

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/petupload/PetUploadScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import androidx.compose.foundation.rememberScrollState
1818
import androidx.compose.foundation.shape.RoundedCornerShape
1919
import androidx.compose.foundation.verticalScroll
2020
import androidx.compose.material.icons.Icons
21-
import androidx.compose.material.icons.filled.ArrowBack
21+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
2222
import androidx.compose.material3.Button
2323
import androidx.compose.material3.ButtonDefaults
2424
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -172,7 +172,7 @@ class PetUploadScreen : Screen {
172172
),
173173
navigationIcon = {
174174
IconButton(onClick = { onClose.invoke() }) {
175-
Icon(imageVector = Icons.Filled.ArrowBack, contentDescription = "Go back")
175+
Icon(imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Go back")
176176
}
177177
},
178178
actions = {

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/platform/Resources.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,3 @@ import androidx.compose.ui.text.font.FontWeight
77

88
@Composable
99
expect fun font(name: String, res: String, weight: FontWeight, style: FontStyle): Font
10-
11-
object Resources {
12-
object Drawables {
13-
const val mindMap = "drawable/mind_map.xml"
14-
const val noData = "drawable/no_data_cuate.xml"
15-
const val login = "drawable/authentication_rafiki.xml"
16-
const val catAndDog = "drawable/cat_dog.xml"
17-
const val mkLogo = "drawable/mklogo.xml"
18-
const val features = "drawable/features_overview_cuate.xml"
19-
const val productQuality = "drawable/product_quality_amico.xml"
20-
}
21-
}

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/ui/components/NoResultsLayout.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
@file:OptIn(ExperimentalResourceApi::class)
2-
31
package com.multiplatformkickstarter.app.ui.components
42

53
import androidx.compose.foundation.Image
@@ -22,17 +20,17 @@ import androidx.compose.ui.Modifier
2220
import androidx.compose.ui.text.style.TextAlign
2321
import androidx.compose.ui.unit.dp
2422
import com.multiplatformkickstarter.app.localization.Localization
25-
import com.multiplatformkickstarter.app.platform.Resources
23+
import com.multiplatformkickstarter.app.resources.Res
24+
import com.multiplatformkickstarter.app.resources.no_data_cuate
2625
import com.multiplatformkickstarter.app.ui.theme.Typography
2726
import org.jetbrains.compose.resources.DrawableResource
28-
import org.jetbrains.compose.resources.ExperimentalResourceApi
29-
import org.jetbrains.compose.resources.painterResource
27+
import org.jetbrains.compose.resources.vectorResource
3028

3129
@Composable
3230
fun EmptyLayout(
3331
title: String? = null,
3432
description: String? = null,
35-
imageResource: String? = null,
33+
imageResource: DrawableResource? = null,
3634
actionLabel: String? = null,
3735
localization: Localization,
3836
action: () -> Unit
@@ -57,7 +55,7 @@ fun EmptyLayout(
5755
color = MaterialTheme.colorScheme.outline
5856
)
5957
Image(
60-
painterResource(DrawableResource(imageResource ?: Resources.Drawables.noData)),
58+
imageVector = vectorResource(imageResource ?: Res.drawable.no_data_cuate),
6159
contentDescription = description,
6260
modifier = Modifier.size(260.dp)
6361
)

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/ui/components/OnBoarding.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@file:OptIn(ExperimentalFoundationApi::class, ExperimentalFoundationApi::class, ExperimentalResourceApi::class)
1+
@file:OptIn(ExperimentalFoundationApi::class, ExperimentalFoundationApi::class)
22

33
package com.multiplatformkickstarter.app.ui.components
44

@@ -35,7 +35,6 @@ import androidx.compose.ui.unit.dp
3535
import com.multiplatformkickstarter.app.ui.theme.Typography
3636
import kotlinx.coroutines.launch
3737
import org.jetbrains.compose.resources.DrawableResource
38-
import org.jetbrains.compose.resources.ExperimentalResourceApi
3938
import org.jetbrains.compose.resources.painterResource
4039

4140
private val defaultAction = {}
@@ -109,7 +108,7 @@ class OnboardingComponent(
109108
verticalArrangement = Arrangement.SpaceBetween
110109
) {
111110
Image(
112-
painterResource(DrawableResource(item.imageResource)),
111+
painterResource(item.imageResource),
113112
"",
114113
modifier = Modifier
115114
.fillMaxWidth()
@@ -178,7 +177,7 @@ class OnboardingComponent(
178177
}
179178

180179
data class CarouselItem(
181-
val imageResource: String,
180+
val imageResource: DrawableResource,
182181
val title: AnnotatedString?,
183182
val description: AnnotatedString?,
184183
val actionText: String,

0 commit comments

Comments
 (0)