feat: Add image viewer state management to disable swipe-back when photo is fullscreen
This commit is contained in:
@@ -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
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 при начале закрытия (до анимации)
|
||||
|
||||
Reference in New Issue
Block a user