Skip to content

Commit 356e9ba

Browse files
authored
Migrate to decompose 2.2.0 (#80)
* Dump dependencies * Migrate from parcelable and parcelize to kotlinx serializable * Update api * Make decompose dependency api
1 parent 48d27a1 commit 356e9ba

File tree

23 files changed

+96
-141
lines changed

23 files changed

+96
-141
lines changed

app/build.gradle.kts

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import org.jetbrains.compose.desktop.application.dsl.TargetFormat.Deb
22
import org.jetbrains.compose.desktop.application.dsl.TargetFormat.Dmg
33
import org.jetbrains.compose.desktop.application.dsl.TargetFormat.Msi
4-
import org.jetbrains.compose.experimental.dsl.IOSDevices
54

65
plugins {
76
kotlin("multiplatform")
7+
kotlin("plugin.serialization")
88
id("com.android.application")
99
id("org.jetbrains.compose")
10-
id("kotlin-parcelize")
1110
}
1211

1312
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class)
@@ -71,7 +70,6 @@ kotlin {
7170

7271
implementation(libs.decompose)
7372
implementation(libs.decompose.compose.multiplatform)
74-
implementation(libs.essenty.parcelable)
7573
}
7674
}
7775

@@ -142,29 +140,5 @@ compose.desktop {
142140
}
143141

144142
compose.experimental {
145-
web.application {
146-
}
147-
148-
uikit.application {
149-
bundleIdPrefix = "io.github.xxfast.decompose.router.app"
150-
projectName = "DecomposeRouterApp"
151-
152-
deployConfigurations {
153-
simulator("IPhone12Pro") {
154-
// Usage: ./gradlew iosDeployIPhone12ProDebug
155-
device = IOSDevices.IPHONE_12_PRO
156-
}
157-
158-
/*
159-
* Usage: ./gradlew iosDeployDeviceDebug
160-
*
161-
* If your are getting "A valid provisioning profile for this executable was not found" error,
162-
* see: https://developer.apple.com/forums/thread/128121?answerId=403323022#403323022
163-
*/
164-
connectedDevice("Device") {
165-
// Uncomment and fill with your Team ID
166-
// teamId = ""
167-
}
168-
}
169-
}
170-
}
143+
web.application { }
144+
}

app/src/commonMain/kotlin/io/github/xxfast/decompose/router/app/screens/HomeScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package io.github.xxfast.decompose.router.app.screens
22

33
import androidx.compose.runtime.Composable
44
import com.arkivanov.decompose.ExperimentalDecomposeApi
5-
import com.arkivanov.decompose.extensions.compose.jetbrains.stack.animation.predictiveBackAnimation
5+
import com.arkivanov.decompose.extensions.compose.jetbrains.stack.animation.predictiveback.predictiveBackAnimation
66
import com.arkivanov.decompose.extensions.compose.jetbrains.stack.animation.slide
77
import com.arkivanov.decompose.extensions.compose.jetbrains.stack.animation.stackAnimation
88
import com.arkivanov.decompose.router.stack.pop
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package io.github.xxfast.decompose.router.app.screens
22

3-
import com.arkivanov.essenty.parcelable.Parcelable
4-
import com.arkivanov.essenty.parcelable.Parcelize
3+
import kotlinx.serialization.Serializable
54

6-
@Parcelize
7-
sealed class HomeScreens: Parcelable {
8-
data object List: HomeScreens()
9-
data object Nested: HomeScreens()
10-
data class Details(val number: Int): HomeScreens()
5+
@Serializable
6+
sealed class HomeScreens {
7+
@Serializable data object List: HomeScreens()
8+
@Serializable data object Nested: HomeScreens()
9+
@Serializable data class Details(val number: Int): HomeScreens()
1110
}
1211

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.github.xxfast.decompose.router.app.screens.details
22

3-
import com.arkivanov.essenty.parcelable.Parcelable
4-
import com.arkivanov.essenty.parcelable.Parcelize
3+
import kotlinx.serialization.Serializable
54

6-
@Parcelize
7-
data class DetailState(val count: Int): Parcelable
5+
@Serializable
6+
data class DetailState(val count: Int)

app/src/commonMain/kotlin/io/github/xxfast/decompose/router/app/screens/list/ListScreen.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,19 @@ import io.github.xxfast.decompose.router.app.screens.FAVORITE_TAG
3535
import io.github.xxfast.decompose.router.app.screens.LIST_TAG
3636
import io.github.xxfast.decompose.router.app.screens.TITLE_BAR_TAG
3737
import io.github.xxfast.decompose.router.app.screens.TOOLBAR_TAG
38+
import kotlinx.serialization.InternalSerializationApi
39+
import kotlinx.serialization.serializer
3840

39-
@OptIn(ExperimentalMaterial3Api::class)
41+
@OptIn(ExperimentalMaterial3Api::class, InternalSerializationApi::class)
4042
@Composable
4143
fun ListScreen(
4244
onSelect: (count: Int) -> Unit,
4345
onSelectColor: () -> Unit,
4446
) {
45-
val instance: ListInstance = rememberOnRoute(ListInstance::class) { savedState ->
47+
val instance: ListInstance = rememberOnRoute(
48+
type = ListInstance::class,
49+
strategy = ListState::class.serializer()
50+
) { savedState ->
4651
ListInstance(savedState)
4752
}
4853

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package io.github.xxfast.decompose.router.app.screens.list
22

3-
import com.arkivanov.essenty.parcelable.Parcelable
4-
import com.arkivanov.essenty.parcelable.Parcelize
3+
import kotlinx.serialization.Serializable
54

6-
@Parcelize
7-
data class ListState(val items: List<Int>? = Loading): Parcelable
5+
@Serializable data class ListState(val items: List<Int>? = Loading)
86

97
val Loading: Nothing? = null

app/src/commonMain/kotlin/io/github/xxfast/decompose/router/app/screens/nested/NestedScreenModels.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package io.github.xxfast.decompose.router.app.screens.nested
22

3-
import com.arkivanov.essenty.parcelable.Parcelable
4-
import com.arkivanov.essenty.parcelable.Parcelize
3+
import kotlinx.serialization.Serializable
54

6-
@Parcelize
7-
sealed class NestedScreens: Parcelable {
5+
@Serializable
6+
sealed class NestedScreens {
87
data object Home: NestedScreens()
98
data object Primary: NestedScreens()
109
data object Secondary: NestedScreens()

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ buildscript {
1616
classpath(libs.agp)
1717
classpath(libs.compose.multiplatform)
1818
classpath(libs.kotlin.gradle.plugin)
19+
classpath(libs.kotlinx.serialization)
1920
}
2021
}
2122

decompose-router-wear/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ kotlin {
2323
implementation(libs.wear.compose.material)
2424
implementation(libs.wear.compose.ui.tooling)
2525
implementation(libs.androidx.activity.compose)
26-
implementation(libs.essenty.parcelable)
2726
implementation(libs.decompose)
2827
implementation(libs.decompose.compose.multiplatform)
2928
}

decompose-router-wear/src/androidMain/kotlin/io/github/xxfast/decompose/router/wear/content/RoutedContent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.github.xxfast.decompose.router.wear.content
22

3-
import android.os.Parcelable
43
import androidx.compose.runtime.Composable
54
import androidx.compose.runtime.CompositionLocalProvider
65
import androidx.compose.runtime.DisposableEffect
@@ -23,10 +22,11 @@ import io.github.xxfast.decompose.router.LocalRouter
2322
import io.github.xxfast.decompose.router.LocalRouterContext
2423
import io.github.xxfast.decompose.router.Router
2524
import io.github.xxfast.decompose.router.RouterContext
25+
import kotlinx.serialization.Serializable
2626

2727
@OptIn(ExperimentalWearFoundationApi::class)
2828
@Composable
29-
fun <C : Parcelable> RoutedContent(
29+
fun <C : @Serializable Any> RoutedContent(
3030
router: Router<C>,
3131
modifier: Modifier = Modifier,
3232
content: @Composable (C) -> Unit,

0 commit comments

Comments
 (0)