diff --git a/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt b/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt index 67658ed..1f1c13a 100644 --- a/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt +++ b/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt @@ -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