Timeline media: kind of align with other messenger apps

This commit is contained in:
ganfra 2023-06-19 21:38:54 +02:00
parent 35dcc5dd5a
commit 6ca36b2339
3 changed files with 11 additions and 13 deletions

View file

@ -25,22 +25,23 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
private const val MAX_HEIGHT_IN_DP = 360f
private const val MIN_ASPECT_RATIO = 0.6f
private const val MAX_ASPECT_RATIO = 4f
private const val DEFAULT_ASPECT_RATIO = 1.33f
@Composable
fun TimelineItemAspectRatioBox(
height: Int?,
aspectRatio: Float?,
modifier: Modifier = Modifier,
contentAlignment: Alignment = Alignment.TopStart,
content: @Composable BoxScope.() -> Unit,
content: @Composable (BoxScope.() -> Unit),
) {
val maxHeight = minOf(300, maxOf(100, height ?: Int.MAX_VALUE))
val aspectRatioModifier = aspectRatio?.let {
Modifier.aspectRatio(it)
} ?: Modifier
val safeAspectRatio = (aspectRatio ?: DEFAULT_ASPECT_RATIO).coerceIn(MIN_ASPECT_RATIO, MAX_ASPECT_RATIO)
Box(
modifier = modifier
.heightIn(max = maxHeight.dp)
.then(aspectRatioModifier),
.heightIn(max = MAX_HEIGHT_IN_DP.dp)
.aspectRatio(safeAspectRatio, true),
contentAlignment = contentAlignment,
content = content
)

View file

@ -34,14 +34,13 @@ fun TimelineItemImageView(
modifier: Modifier = Modifier,
) {
TimelineItemAspectRatioBox(
height = content.height,
aspectRatio = content.aspectRatio,
modifier = modifier
) {
BlurHashAsyncImage(
model = MediaRequestData(content.preferredMediaSource, MediaRequestData.Kind.File(content.body, content.mimeType)),
blurHash = content.blurhash,
contentScale = ContentScale.Fit,
contentScale = ContentScale.Crop,
)
}
}

View file

@ -43,7 +43,6 @@ fun TimelineItemVideoView(
modifier: Modifier = Modifier,
) {
TimelineItemAspectRatioBox(
height = content.height,
aspectRatio = content.aspectRatio,
modifier = modifier,
contentAlignment = Alignment.Center,
@ -51,8 +50,7 @@ fun TimelineItemVideoView(
BlurHashAsyncImage(
model = MediaRequestData(content.thumbnailSource, MediaRequestData.Kind.File(content.body, content.mimeType)),
blurHash = content.blurHash,
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Fit,
contentScale = ContentScale.Crop,
)
Box(
modifier = Modifier.roundedBackground(),