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