diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts index 64219943b..685dd9640 100644 --- a/core/model/build.gradle.kts +++ b/core/model/build.gradle.kts @@ -4,6 +4,7 @@ plugins { } dependencies { + compileOnly(libs.compose.stable.marker) api(libs.kotlinx.collections.immutable) implementation(libs.kotlinx.serialization.json) } diff --git a/core/model/src/main/java/com/neki/android/core/model/Album.kt b/core/model/src/main/java/com/neki/android/core/model/Album.kt index 0c53478de..f73418f6f 100644 --- a/core/model/src/main/java/com/neki/android/core/model/Album.kt +++ b/core/model/src/main/java/com/neki/android/core/model/Album.kt @@ -1,10 +1,12 @@ package com.neki.android.core.model +import androidx.compose.runtime.Immutable import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.serialization.Serializable @Serializable +@Immutable data class Album( val id: Long = 0L, val title: String = "", @@ -13,6 +15,7 @@ data class Album( ) @Serializable +@Immutable data class AlbumPreview( val id: Long = 0L, val title: String = "", diff --git a/core/model/src/main/java/com/neki/android/core/model/Brand.kt b/core/model/src/main/java/com/neki/android/core/model/Brand.kt index 5c1b49434..60d609dcc 100644 --- a/core/model/src/main/java/com/neki/android/core/model/Brand.kt +++ b/core/model/src/main/java/com/neki/android/core/model/Brand.kt @@ -1,5 +1,8 @@ package com.neki.android.core.model +import androidx.compose.runtime.Immutable + +@Immutable data class Brand( val isChecked: Boolean = false, val id: Long = 0L, diff --git a/core/model/src/main/java/com/neki/android/core/model/Photo.kt b/core/model/src/main/java/com/neki/android/core/model/Photo.kt index e83af823d..4bf01f306 100644 --- a/core/model/src/main/java/com/neki/android/core/model/Photo.kt +++ b/core/model/src/main/java/com/neki/android/core/model/Photo.kt @@ -1,10 +1,11 @@ package com.neki.android.core.model +import androidx.compose.runtime.Immutable import kotlinx.serialization.Serializable -import kotlin.time.ExperimentalTime @Serializable -data class Photo @OptIn(ExperimentalTime::class) constructor( +@Immutable +data class Photo( val id: Long = 0L, val imageUrl: String = "", val isFavorite: Boolean = false, diff --git a/core/model/src/main/java/com/neki/android/core/model/PhotoBooth.kt b/core/model/src/main/java/com/neki/android/core/model/PhotoBooth.kt index f5f4e534d..4d5f37d1a 100644 --- a/core/model/src/main/java/com/neki/android/core/model/PhotoBooth.kt +++ b/core/model/src/main/java/com/neki/android/core/model/PhotoBooth.kt @@ -1,5 +1,8 @@ package com.neki.android.core.model +import androidx.compose.runtime.Immutable + +@Immutable data class PhotoBooth( val isFocused: Boolean = false, val isCheckedBrand: Boolean = true, diff --git a/core/model/src/main/java/com/neki/android/core/model/Pose.kt b/core/model/src/main/java/com/neki/android/core/model/Pose.kt index ecfc81ac5..db0c1f3d4 100644 --- a/core/model/src/main/java/com/neki/android/core/model/Pose.kt +++ b/core/model/src/main/java/com/neki/android/core/model/Pose.kt @@ -1,8 +1,10 @@ package com.neki.android.core.model +import androidx.compose.runtime.Immutable import kotlinx.serialization.Serializable @Serializable +@Immutable data class Pose( val id: Long = 0L, val poseImageUrl: String = "", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 91a5e5587..21e35896e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,6 +2,7 @@ agp = "8.13.1" annotationExperimental = "1.5.1" cameraX = "1.5.2" +composeStableMarker = "1.0.7" kotlin = "2.1.0" coreKtx = "1.15.0" junit = "4.13.2" @@ -55,6 +56,7 @@ androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui- androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +compose-stable-marker = { module = "com.github.skydoves:compose-stable-marker", version.ref = "composeStableMarker" } androidx-navigation3-runtime = { group = "androidx.navigation3", name = "navigation3-runtime", version.ref = "androidxNavigation3" } androidx-navigation3-ui = { group = "androidx.navigation3", name = "navigation3-ui", version.ref = "androidxNavigation3" }