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(
|
SwipeBackContainer(
|
||||||
isVisible = selectedUser != null,
|
isVisible = selectedUser != null,
|
||||||
onBack = { selectedUser = null },
|
onBack = { selectedUser = null },
|
||||||
isDarkTheme = isDarkTheme
|
isDarkTheme = isDarkTheme,
|
||||||
|
swipeEnabled = !isImageViewerOpen
|
||||||
) {
|
) {
|
||||||
if (selectedUser != null) {
|
if (selectedUser != null) {
|
||||||
// Экран чата
|
// Экран чата
|
||||||
@@ -821,7 +825,10 @@ fun MainScreen(
|
|||||||
selectedUser = forwardUser
|
selectedUser = forwardUser
|
||||||
},
|
},
|
||||||
isDarkTheme = isDarkTheme,
|
isDarkTheme = isDarkTheme,
|
||||||
avatarRepository = avatarRepository
|
avatarRepository = avatarRepository,
|
||||||
|
onImageViewerChanged = { isOpen ->
|
||||||
|
isImageViewerOpen = isOpen
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,8 @@ fun ChatDetailScreen(
|
|||||||
currentUserPrivateKey: String,
|
currentUserPrivateKey: String,
|
||||||
totalUnreadFromOthers: Int = 0,
|
totalUnreadFromOthers: Int = 0,
|
||||||
isDarkTheme: Boolean,
|
isDarkTheme: Boolean,
|
||||||
avatarRepository: AvatarRepository? = null
|
avatarRepository: AvatarRepository? = null,
|
||||||
|
onImageViewerChanged: (Boolean) -> Unit = {}
|
||||||
) {
|
) {
|
||||||
val viewModel: ChatViewModel = viewModel(key = "chat_${user.publicKey}")
|
val viewModel: ChatViewModel = viewModel(key = "chat_${user.publicKey}")
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
@@ -1813,6 +1814,7 @@ fun ChatDetailScreen(
|
|||||||
imageViewerInitialIndex = findImageIndex(allImages, attachmentId)
|
imageViewerInitialIndex = findImageIndex(allImages, attachmentId)
|
||||||
imageViewerSourceBounds = bounds
|
imageViewerSourceBounds = bounds
|
||||||
showImageViewer = true
|
showImageViewer = true
|
||||||
|
onImageViewerChanged(true)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -1886,6 +1888,7 @@ fun ChatDetailScreen(
|
|||||||
onDismiss = {
|
onDismiss = {
|
||||||
showImageViewer = false
|
showImageViewer = false
|
||||||
imageViewerSourceBounds = null
|
imageViewerSourceBounds = null
|
||||||
|
onImageViewerChanged(false)
|
||||||
},
|
},
|
||||||
onClosingStart = {
|
onClosingStart = {
|
||||||
// Сразу сбрасываем status bar при начале закрытия (до анимации)
|
// Сразу сбрасываем status bar при начале закрытия (до анимации)
|
||||||
|
|||||||
Reference in New Issue
Block a user