Timeline media: kind of align with other messenger apps
This commit is contained in:
parent
7f8250106c
commit
07a2d309c4
3 changed files with 11 additions and 13 deletions
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue