Timeline media: kind of align with other messenger apps

This commit is contained in:
ganfra 2023-06-19 21:38:54 +02:00
parent 7f8250106c
commit 07a2d309c4
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.Modifier
import androidx.compose.ui.unit.dp 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 @Composable
fun TimelineItemAspectRatioBox( fun TimelineItemAspectRatioBox(
height: Int?,
aspectRatio: Float?, aspectRatio: Float?,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
contentAlignment: Alignment = Alignment.TopStart, contentAlignment: Alignment = Alignment.TopStart,
content: @Composable BoxScope.() -> Unit, content: @Composable (BoxScope.() -> Unit),
) { ) {
val maxHeight = minOf(300, maxOf(100, height ?: Int.MAX_VALUE)) val safeAspectRatio = (aspectRatio ?: DEFAULT_ASPECT_RATIO).coerceIn(MIN_ASPECT_RATIO, MAX_ASPECT_RATIO)
val aspectRatioModifier = aspectRatio?.let {
Modifier.aspectRatio(it)
} ?: Modifier
Box( Box(
modifier = modifier modifier = modifier
.heightIn(max = maxHeight.dp) .heightIn(max = MAX_HEIGHT_IN_DP.dp)
.then(aspectRatioModifier), .aspectRatio(safeAspectRatio, true),
contentAlignment = contentAlignment, contentAlignment = contentAlignment,
content = content content = content
) )

View file

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

View file

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