feat: auto-hide media viewer chrome
This commit is contained in:
@@ -2474,6 +2474,9 @@ private fun ChatMediaViewerOverlay(
|
||||
var showTopBar by remember { mutableStateOf(true) }
|
||||
var dismissProgress by remember { mutableStateOf(0f) }
|
||||
val backgroundAlpha = (0.94f - (dismissProgress.coerceIn(0f, 1f) * 0.55f)).coerceIn(0.35f, 0.94f)
|
||||
val toggleChrome: () -> Unit = {
|
||||
showTopBar = !showTopBar
|
||||
}
|
||||
|
||||
Surface(
|
||||
modifier = Modifier
|
||||
@@ -2487,8 +2490,8 @@ private fun ChatMediaViewerOverlay(
|
||||
) {
|
||||
AnimatedVisibility(
|
||||
visible = showTopBar,
|
||||
enter = fadeIn(),
|
||||
exit = fadeOut(),
|
||||
enter = fadeIn(animationSpec = tween(180)) + slideInVertically(initialOffsetY = { -it / 3 }),
|
||||
exit = fadeOut(animationSpec = tween(120)) + slideOutVertically(targetOffsetY = { -it / 3 }),
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
@@ -2518,14 +2521,14 @@ private fun ChatMediaViewerOverlay(
|
||||
ChatViewerMediaType.Image -> ZoomableImageViewerPage(
|
||||
imageUrl = item.url,
|
||||
onDismiss = onDismiss,
|
||||
onToggleChrome = { showTopBar = !showTopBar },
|
||||
onToggleChrome = toggleChrome,
|
||||
onDismissProgressChanged = { dismissProgress = it },
|
||||
)
|
||||
ChatViewerMediaType.Video -> VideoViewerPage(
|
||||
videoUrl = item.url,
|
||||
isCurrentPage = pagerState.currentPage == page,
|
||||
onDismiss = onDismiss,
|
||||
onToggleChrome = { showTopBar = !showTopBar },
|
||||
onToggleChrome = toggleChrome,
|
||||
onDismissProgressChanged = { dismissProgress = it },
|
||||
)
|
||||
}
|
||||
@@ -2533,8 +2536,8 @@ private fun ChatMediaViewerOverlay(
|
||||
|
||||
AnimatedVisibility(
|
||||
visible = showTopBar && items.getOrNull(pagerState.currentPage)?.reactions?.isNotEmpty() == true,
|
||||
enter = fadeIn(),
|
||||
exit = fadeOut(),
|
||||
enter = fadeIn(animationSpec = tween(180)) + slideInVertically(initialOffsetY = { it / 3 }),
|
||||
exit = fadeOut(animationSpec = tween(120)) + slideOutVertically(targetOffsetY = { it / 3 }),
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
@@ -2566,8 +2569,15 @@ private fun ChatMediaViewerOverlay(
|
||||
|
||||
LaunchedEffect(pagerState.currentPage) {
|
||||
dismissProgress = 0f
|
||||
showTopBar = true
|
||||
onPageChanged(pagerState.currentPage)
|
||||
}
|
||||
|
||||
LaunchedEffect(showTopBar, pagerState.currentPage) {
|
||||
if (!showTopBar || items.isEmpty()) return@LaunchedEffect
|
||||
delay(2200)
|
||||
showTopBar = false
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
||||
Reference in New Issue
Block a user