Skip to content

Commit bcd90d4

Browse files
committed
Migrate to kotlin 2.0
1 parent 7491f3b commit bcd90d4

File tree

8 files changed

+41
-37
lines changed

8 files changed

+41
-37
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99

1010
[![Kotlin Experimental](https://kotl.in/badges/experimental.svg)](https://kotlinlang.org/docs/components-stability.html)
1111
[![Build](https://github.com/xxfast/Decompose-Router/actions/workflows/build.yml/badge.svg)](https://github.com/xxfast/Decompose-Router/actions/workflows/build.yml)
12-
[![Kotlin](https://img.shields.io/badge/Kotlin-1.9.10-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org)
12+
[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.0-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org)
1313
[![Maven Central](https://img.shields.io/maven-central/v/io.github.xxfast/decompose-router?color=blue)](https://search.maven.org/search?q=g:io.github.xxfast)
1414

1515
![badge-android](http://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat)
1616
![badge-wearos](http://img.shields.io/badge/platform-wearos-8ECDA0.svg?style=flat)
1717
![badge-desktop](http://img.shields.io/badge/platform-desktop-4D76CD.svg?style=flat)
1818
![badge-ios](http://img.shields.io/badge/platform-ios-EAEAEA.svg?style=flat)
19-
![badge-browser](https://img.shields.io/badge/platform-js-F8DB5D.svg?style=flat)
19+
![badge-browser-js](https://img.shields.io/badge/platform-js-F8DB5D.svg?style=flat)
20+
![badge-browser-wasm](https://img.shields.io/badge/platform-wasm-F8DB5D.svg?style=flat)
2021

2122
A Compose-multiplatform navigation library that leverage [Decompose](https://github.com/arkivanov/Decompose) to create an API inspired by [Conductor](https://github.com/bluelinelabs/Conductor)
2223

app/build.gradle.kts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
55

66
plugins {
77
kotlin("multiplatform")
8-
kotlin("plugin.serialization")
9-
id("com.android.application")
10-
id("org.jetbrains.compose")
8+
alias(libs.plugins.android.application)
9+
alias(libs.plugins.compose.multiplatform)
10+
alias(libs.plugins.kotlin.compose)
11+
alias(libs.plugins.kotlin.serialization)
1112
}
1213

13-
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class)
1414
kotlin {
15-
targetHierarchy.default()
15+
applyDefaultHierarchyTemplate()
1616

1717
androidTarget {
1818
compilations.all {

build.gradle.kts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
22

33
plugins {
4-
id("org.jetbrains.dokka") version "1.8.20"
5-
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.13.2"
4+
alias(libs.plugins.android.application) apply false
5+
alias(libs.plugins.android.library) apply false
6+
alias(libs.plugins.kotlin.compose) apply false
7+
alias(libs.plugins.compose.multiplatform) apply false
8+
9+
alias(libs.plugins.dokka)
10+
alias(libs.plugins.binary.compatibility.validator)
611
}
712

813
buildscript {
@@ -11,13 +16,6 @@ buildscript {
1116
mavenCentral()
1217
gradlePluginPortal()
1318
}
14-
15-
dependencies {
16-
classpath(libs.agp)
17-
classpath(libs.compose.multiplatform)
18-
classpath(libs.kotlin.gradle.plugin)
19-
classpath(libs.kotlin.serialization.plugin)
20-
}
2119
}
2220

2321
apiValidation {
@@ -52,8 +50,8 @@ allprojects {
5250
)
5351

5452
credentials {
55-
username = gradleLocalProperties(rootDir).getProperty("sonatypeUsername")
56-
password = gradleLocalProperties(rootDir).getProperty("sonatypePassword")
53+
username = gradleLocalProperties(rootDir, providers).getProperty("sonatypeUsername")
54+
password = gradleLocalProperties(rootDir, providers).getProperty("sonatypePassword")
5755
}
5856
}
5957
}
@@ -100,8 +98,8 @@ allprojects {
10098
val publishing = extensions.getByType<PublishingExtension>()
10199
extensions.configure<SigningExtension> {
102100
useInMemoryPgpKeys(
103-
gradleLocalProperties(rootDir).getProperty("gpgKeySecret"),
104-
gradleLocalProperties(rootDir).getProperty("gpgKeyPassword"),
101+
gradleLocalProperties(rootDir, providers).getProperty("gpgKeySecret"),
102+
gradleLocalProperties(rootDir, providers).getProperty("gpgKeyPassword"),
105103
)
106104

107105
sign(publishing.publications)

decompose-router-wear/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
plugins {
22
kotlin("multiplatform")
3-
id("com.android.library")
4-
id("org.jetbrains.compose")
3+
alias(libs.plugins.android.library)
4+
alias(libs.plugins.compose.multiplatform)
5+
alias(libs.plugins.kotlin.compose)
56
}
67

78
kotlin {

decompose-router/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
33

44
plugins {
55
kotlin("multiplatform")
6-
id("com.android.library")
7-
id("org.jetbrains.compose")
8-
id("kotlin-parcelize")
6+
alias(libs.plugins.android.library)
7+
alias(libs.plugins.compose.multiplatform)
8+
alias(libs.plugins.kotlin.compose)
99
}
1010

1111
kotlin {

decompose-router/src/commonMain/kotlin/io/github/xxfast/decompose/router/RememberOnRoute.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.DisallowComposableCalls
55
import androidx.compose.runtime.remember
66
import com.arkivanov.essenty.instancekeeper.InstanceKeeper
7+
import com.arkivanov.essenty.instancekeeper.getOrCreate
78
import kotlin.reflect.KClass
89

910
/***
@@ -23,12 +24,7 @@ fun <T: Any> rememberOnRoute(
2324
val routerContext: RouterContext = LocalRouterContext.current
2425
val instanceKeeper: InstanceKeeper = routerContext.instanceKeeper
2526
val routeInstance: RouteInstance = remember(key) {
26-
var instance: RouteInstance? = instanceKeeper.get(key) as RouteInstance?
27-
if (instance == null) {
28-
instance = RouteInstance(block(routerContext))
29-
instanceKeeper.put(key, instance)
30-
}
31-
instance
27+
instanceKeeper.getOrCreate(key) { RouteInstance(block(routerContext)) }
3228
}
3329
return routeInstance.instance
3430
}

gradle/libs.versions.toml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
[versions]
2-
agp = "8.1.1"
2+
agp = "8.3.2"
33
androidx-activity ="1.7.2"
44
androidx-fragment ="1.6.1"
55
compose-multiplatform = "1.6.10"
66
compose-test-rule = "1.5.1"
77
decompose = "3.0.0"
8-
essenty = "2.0.0"
8+
dokka = "1.8.20"
9+
binary-compatibility-validator = "0.13.2"
910
horologist = "0.5.7"
10-
kotlin = "1.9.24"
11+
kotlin = "2.0.0"
1112
kotlinx-coroutines = "1.8.0"
1213
kotlinx-serialization = "1.6.3"
1314
wear-compose = "1.3.0-alpha03"
1415

1516
[libraries]
16-
agp = { module = "com.android.tools.build:gradle", version.ref = "agp" }
1717
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" }
1818
androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity" }
1919
androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" }
@@ -25,9 +25,17 @@ decompose-compose-multiplatform = { module = "com.arkivanov.decompose:extensions
2525
horologist-compose-layouts = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" }
2626
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
2727
kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }
28-
kotlin-serialization-plugin = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" }
2928
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinx-serialization" }
3029
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlin-serialization-json", version.ref = "kotlinx-serialization" }
3130
wear-compose-foundation = { module = "androidx.wear.compose:compose-foundation", version.ref = "wear-compose" }
3231
wear-compose-material = { module = "androidx.wear.compose:compose-material", version.ref = "wear-compose" }
3332
wear-compose-ui-tooling = { module = "androidx.wear.compose:compose-ui-tooling", version.ref = "wear-compose" }
33+
34+
[plugins]
35+
android-application = { id = "com.android.application", version.ref = "agp" }
36+
android-library = { id = "com.android.library", version.ref = "agp" }
37+
binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" }
38+
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
39+
compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" }
40+
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
41+
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
44
networkTimeout=10000
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)