diff --git a/core/designsystem/stability/designsystem.stability b/core/designsystem/stability/designsystem.stability index e3399e9a..319a7836 100644 --- a/core/designsystem/stability/designsystem.stability +++ b/core/designsystem/stability/designsystem.stability @@ -231,7 +231,7 @@ private fun com.ninecraft.booket.core.designsystem.component.checkbox.TickOnlyCh @Composable public fun com.ninecraft.booket.core.designsystem.component.textfield.ReedRecordTextField(recordState: androidx.compose.foundation.text.input.TextFieldState, recordHintRes: kotlin.Int, modifier: androidx.compose.ui.Modifier, inputTransformation: androidx.compose.foundation.text.input.InputTransformation?, keyboardOptions: androidx.compose.foundation.text.KeyboardOptions, lineLimits: androidx.compose.foundation.text.input.TextFieldLineLimits, isError: kotlin.Boolean, errorMessage: kotlin.String, onClear: kotlin.Function0?, onNext: kotlin.Function0, backgroundColor: androidx.compose.ui.graphics.Color, textColor: androidx.compose.ui.graphics.Color, cornerShape: androidx.compose.foundation.shape.RoundedCornerShape, borderStroke: androidx.compose.foundation.BorderStroke): kotlin.Unit - skippable: false + skippable: true restartable: true params: - recordState: STABLE (marked @Stable or @Immutable) @@ -246,7 +246,7 @@ public fun com.ninecraft.booket.core.designsystem.component.textfield.ReedRecord - onNext: STABLE (function type) - backgroundColor: STABLE (marked @Stable or @Immutable) - textColor: STABLE (marked @Stable or @Immutable) - - cornerShape: RUNTIME (requires runtime check) + - cornerShape: STABLE (known stable type) - borderStroke: STABLE (marked @Stable or @Immutable) @Composable @@ -257,7 +257,7 @@ private fun com.ninecraft.booket.core.designsystem.component.textfield.ReedRecor @Composable public fun com.ninecraft.booket.core.designsystem.component.textfield.ReedTextField(queryState: androidx.compose.foundation.text.input.TextFieldState, queryHintRes: kotlin.Int, onSearch: kotlin.Function1, onClear: kotlin.Function0, modifier: androidx.compose.ui.Modifier, backgroundColor: androidx.compose.ui.graphics.Color, textColor: androidx.compose.ui.graphics.Color, cornerShape: androidx.compose.foundation.shape.RoundedCornerShape, borderStroke: androidx.compose.foundation.BorderStroke?, searchIconTint: androidx.compose.ui.graphics.Color): kotlin.Unit - skippable: false + skippable: true restartable: true params: - queryState: STABLE (marked @Stable or @Immutable) @@ -267,7 +267,7 @@ public fun com.ninecraft.booket.core.designsystem.component.textfield.ReedTextFi - modifier: STABLE (marked @Stable or @Immutable) - backgroundColor: STABLE (marked @Stable or @Immutable) - textColor: STABLE (marked @Stable or @Immutable) - - cornerShape: RUNTIME (requires runtime check) + - cornerShape: STABLE (known stable type) - borderStroke: STABLE (marked @Stable or @Immutable) - searchIconTint: STABLE (marked @Stable or @Immutable) diff --git a/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/RecordDetailUi.kt b/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/RecordDetailUi.kt index 93f671da..8bedd731 100644 --- a/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/RecordDetailUi.kt +++ b/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/RecordDetailUi.kt @@ -206,3 +206,30 @@ private fun ReviewDetailPreview() { ) } } + +@ComponentPreview +@Composable +private fun ReviewDetailEmptyPreview() { + ReedTheme { + RecordDetailUi( + state = RecordDetailUiState( + uiState = UiState.Success, + recordDetailInfo = RecordDetailModel( + id = "", + userBookId = "", + pageNumber = 90, + quote = "소설가들은 늘 소재를 찾아 떠도는 존재 같지만, 실은 그 반대인 경우가 더 잦다.", + review = "", + emotionTags = listOf("따뜻함"), + createdAt = "2023.10.10", + updatedAt = "", + bookTitle = "여름은 오래 그곳에 남아", + bookPublisher = "비채 비채 비채 비채", + bookCoverImageUrl = "", + author = "미쓰이에 마사시, 미쓰이에 마사시, 미쓰이에 마사시, 미쓰이에 마사시", + ), + eventSink = {}, + ), + ) + } +} diff --git a/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/ReviewItem.kt b/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/ReviewItem.kt index 8c2fa6e5..6a1c14db 100644 --- a/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/ReviewItem.kt +++ b/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/ReviewItem.kt @@ -39,7 +39,7 @@ internal fun ReviewItem( ) .padding( horizontal = ReedTheme.spacing.spacing4, - vertical = ReedTheme.spacing.spacing3, + vertical = ReedTheme.spacing.spacing4, ), ) { Column { @@ -68,12 +68,14 @@ internal fun ReviewItem( style = ReedTheme.typography.label2Regular, ) } - Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3)) - Text( - text = review, - color = ReedTheme.colors.contentSecondary, - style = ReedTheme.typography.label1Medium, - ) + if (review.isNotBlank()) { + Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3)) + Text( + text = review, + color = ReedTheme.colors.contentSecondary, + style = ReedTheme.typography.label1Medium, + ) + } } } } @@ -89,3 +91,15 @@ private fun ReviewBoxPreview() { ) } } + +@ComponentPreview +@Composable +private fun ReviewBoxEmptyPreview() { + ReedTheme { + ReviewItem( + emotion = "따뜻함", + review = "", + createdAt = "2025.06.25", + ) + } +} diff --git a/feature/detail/stability/detail.stability b/feature/detail/stability/detail.stability index eb8cb1a8..7b658259 100644 --- a/feature/detail/stability/detail.stability +++ b/feature/detail/stability/detail.stability @@ -294,6 +294,12 @@ internal fun com.ninecraft.booket.feature.detail.record.RecordDetailUi(state: co - state: STABLE - modifier: STABLE (marked @Stable or @Immutable) +@Composable +private fun com.ninecraft.booket.feature.detail.record.ReviewDetailEmptyPreview(): kotlin.Unit + skippable: true + restartable: true + params: + @Composable private fun com.ninecraft.booket.feature.detail.record.ReviewDetailPreview(): kotlin.Unit skippable: true @@ -362,6 +368,12 @@ private fun com.ninecraft.booket.feature.detail.record.component.RecordMenuItem( - onClick: STABLE (function type) - modifier: STABLE (marked @Stable or @Immutable) +@Composable +private fun com.ninecraft.booket.feature.detail.record.component.ReviewBoxEmptyPreview(): kotlin.Unit + skippable: true + restartable: true + params: + @Composable private fun com.ninecraft.booket.feature.detail.record.component.ReviewBoxPreview(): kotlin.Unit skippable: true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b086333d..22d562d0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -24,7 +24,7 @@ androidx-compose-material3 = "1.4.0-alpha18" compose-stable-marker = "1.0.6" compose-effects = "0.1.1" compose-shadow = "2.0.4" -compose-stability-analyzer = "0.4.0" +compose-stability-analyzer = "0.4.1" ## Kotlin Symbol Processing ksp = "2.3.0"