diff --git a/app/src/main/java/com/rosetta/messenger/MainActivity.kt b/app/src/main/java/com/rosetta/messenger/MainActivity.kt index 2ac0ad0..11959f8 100644 --- a/app/src/main/java/com/rosetta/messenger/MainActivity.kt +++ b/app/src/main/java/com/rosetta/messenger/MainActivity.kt @@ -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 + } ) } } diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt index 8269393..e32f84a 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt @@ -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 при начале закрытия (до анимации)