Skip to content

Commit 9162cc4

Browse files
committed
Update project
1 parent c4f121c commit 9162cc4

File tree

1 file changed

+33
-50
lines changed
  • core/ui/src/commonMain/kotlin/org/michaelbel/movies/ui/compose/movie

1 file changed

+33
-50
lines changed

core/ui/src/commonMain/kotlin/org/michaelbel/movies/ui/compose/movie/MovieColumn.kt

Lines changed: 33 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package org.michaelbel.movies.ui.compose.movie
22

3-
import androidx.compose.animation.AnimatedVisibility
4-
import androidx.compose.animation.fadeIn
53
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
5+
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.fillMaxSize
67
import androidx.compose.foundation.layout.fillMaxWidth
8+
import androidx.compose.foundation.layout.height
79
import androidx.compose.foundation.layout.padding
810
import androidx.compose.material3.MaterialTheme
911
import androidx.compose.material3.Text
@@ -12,13 +14,12 @@ import androidx.compose.runtime.getValue
1214
import androidx.compose.runtime.mutableStateOf
1315
import androidx.compose.runtime.remember
1416
import androidx.compose.runtime.setValue
17+
import androidx.compose.ui.Alignment
1518
import androidx.compose.ui.Modifier
1619
import androidx.compose.ui.draw.clip
1720
import androidx.compose.ui.layout.ContentScale
1821
import androidx.compose.ui.text.style.TextOverflow
1922
import androidx.compose.ui.unit.dp
20-
import androidx.constraintlayout.compose.ConstraintLayout
21-
import androidx.constraintlayout.compose.Dimension
2223
import coil3.compose.AsyncImage
2324
import coil3.compose.LocalPlatformContext
2425
import coil3.request.ImageRequest
@@ -42,59 +43,41 @@ internal fun MovieColumn(
4243
) {
4344
var isNoImageVisible by remember { mutableStateOf(false) }
4445

45-
ConstraintLayout(
46-
modifier = modifier
46+
Column(
47+
modifier = modifier.fillMaxWidth()
4748
) {
48-
val (image, noImageText, text) = createRefs()
49-
50-
AsyncImage(
51-
model = ImageRequest.Builder(LocalPlatformContext.current)
52-
.data(movie.posterPath.formatPosterImage)
53-
.crossfade(true)
54-
.build(),
55-
contentDescription = MoviesContentDescriptionCommon.None,
56-
modifier = Modifier.constrainAs(image) {
57-
width = Dimension.fillToConstraints
58-
height = Dimension.value(220.dp)
59-
start.linkTo(parent.start)
60-
top.linkTo(parent.top)
61-
end.linkTo(parent.end)
62-
bottom.linkTo(text.top)
63-
},
64-
onState = { state ->
65-
isNoImageVisible = state.isErrorOrEmpty
66-
},
67-
contentScale = ContentScale.Crop
68-
)
69-
70-
AnimatedVisibility(
71-
visible = isNoImageVisible,
72-
modifier = Modifier.constrainAs(noImageText) {
73-
width = Dimension.wrapContent
74-
height = Dimension.wrapContent
75-
start.linkTo(parent.start)
76-
top.linkTo(parent.top)
77-
end.linkTo(parent.end)
78-
bottom.linkTo(text.top)
79-
},
80-
enter = fadeIn()
49+
Box(
50+
modifier = Modifier
51+
.fillMaxWidth()
52+
.height(220.dp)
8153
) {
82-
Text(
83-
text = stringResource(Res.string.no_image),
84-
style = MaterialTheme.typography.bodyLarge.copy(MaterialTheme.colorScheme.secondary)
54+
AsyncImage(
55+
model = ImageRequest.Builder(LocalPlatformContext.current)
56+
.data(movie.posterPath.formatPosterImage)
57+
.crossfade(true)
58+
.build(),
59+
contentDescription = MoviesContentDescriptionCommon.None,
60+
modifier = Modifier.fillMaxSize(),
61+
onState = { state ->
62+
isNoImageVisible = state.isErrorOrEmpty
63+
},
64+
contentScale = ContentScale.Crop
8565
)
66+
67+
if (isNoImageVisible) {
68+
Text(
69+
text = stringResource(Res.string.no_image),
70+
style = MaterialTheme.typography.bodyLarge.copy(MaterialTheme.colorScheme.secondary),
71+
modifier = Modifier.align(Alignment.Center)
72+
)
73+
}
8674
}
8775

8876
Text(
8977
text = movie.title,
90-
modifier = Modifier.constrainAs(text) {
91-
width = Dimension.fillToConstraints
92-
height = Dimension.wrapContent
93-
start.linkTo(parent.start, 16.dp)
94-
top.linkTo(image.bottom, 16.dp)
95-
end.linkTo(parent.end, 16.dp)
96-
bottom.linkTo(parent.bottom, 16.dp)
97-
},
78+
modifier = Modifier
79+
.fillMaxWidth()
80+
.padding(16.dp),
9881
maxLines = 10,
9982
overflow = TextOverflow.Ellipsis,
10083
style = MaterialTheme.typography.bodyLarge.copy(MaterialTheme.colorScheme.onPrimaryContainer)

0 commit comments

Comments
 (0)