From 6ca36b2339a1feeda40667abb095b2861b376717 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 19 Jun 2023 21:38:54 +0200 Subject: [PATCH] Timeline media: kind of align with other messenger apps --- .../event/TimelineItemAspectRatioBox.kt | 17 +++++++++-------- .../components/event/TimelineItemImageView.kt | 3 +-- .../components/event/TimelineItemVideoView.kt | 4 +--- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAspectRatioBox.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAspectRatioBox.kt index b1240f9236..f733913bc8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAspectRatioBox.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemAspectRatioBox.kt @@ -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 ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemImageView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemImageView.kt index f6c1c069b9..6c7b51ddfa 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemImageView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemImageView.kt @@ -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, ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt index f3bd4129d1..aeb2e7145e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt @@ -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(),