feat: Add image viewer state management to disable swipe-back when photo is fullscreen

This commit is contained in:
k1ngsterr1
2026-02-07 18:44:24 +05:00
parent b49d08b61b
commit fdc4f42e1d
2 changed files with 13 additions and 3 deletions

View File

@@ -799,10 +799,14 @@ fun MainScreen(
)
}
// 🖼️ Image viewer state — disable swipe-back when photo is fullscreen
var isImageViewerOpen by remember { mutableStateOf(false) }
SwipeBackContainer(
isVisible = selectedUser != null,
onBack = { selectedUser = null },
isDarkTheme = isDarkTheme
isDarkTheme = isDarkTheme,
swipeEnabled = !isImageViewerOpen
) {
if (selectedUser != null) {
// Экран чата
@@ -821,7 +825,10 @@ fun MainScreen(
selectedUser = forwardUser
},
isDarkTheme = isDarkTheme,
avatarRepository = avatarRepository
avatarRepository = avatarRepository,
onImageViewerChanged = { isOpen ->
isImageViewerOpen = isOpen
}
)
}
}

View File

@@ -114,7 +114,8 @@ fun ChatDetailScreen(
currentUserPrivateKey: String,
totalUnreadFromOthers: Int = 0,
isDarkTheme: Boolean,
avatarRepository: AvatarRepository? = null
avatarRepository: AvatarRepository? = null,
onImageViewerChanged: (Boolean) -> Unit = {}
) {
val viewModel: ChatViewModel = viewModel(key = "chat_${user.publicKey}")
val context = LocalContext.current
@@ -1813,6 +1814,7 @@ fun ChatDetailScreen(
imageViewerInitialIndex = findImageIndex(allImages, attachmentId)
imageViewerSourceBounds = bounds
showImageViewer = true
onImageViewerChanged(true)
}
)
}
@@ -1886,6 +1888,7 @@ fun ChatDetailScreen(
onDismiss = {
showImageViewer = false
imageViewerSourceBounds = null
onImageViewerChanged(false)
},
onClosingStart = {
// Сразу сбрасываем status bar при начале закрытия (до анимации)