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 ed45ca8..5fac30a 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 @@ -292,9 +292,15 @@ fun ChatDetailScreen( val hasReply = replyMessages.isNotEmpty() // 🔥 Snapshot последнего непустого состояния для отображения во время анимации закрытия - val displayReplyMessages = remember(replyMessages) { - if (replyMessages.isNotEmpty()) replyMessages else emptyList() - }.let { if (hasReply) replyMessages else it } + // Используем rememberSaveable с mutableStateOf чтобы сохранять данные пока панель закрывается + var displayReplyMessages by remember { mutableStateOf(replyMessages) } + + // Обновляем snapshot только когда появляются новые данные (не пустые) + LaunchedEffect(replyMessages) { + if (replyMessages.isNotEmpty()) { + displayReplyMessages = replyMessages + } + } // 🔥 FocusRequester для автофокуса на инпут при reply val inputFocusRequester = remember { FocusRequester() } diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt index 3d7aa32..ba256fe 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt @@ -1032,9 +1032,8 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) { _messages.value = _messages.value + optimisticMessage _inputText.value = "" - // 🔥 НЕ очищаем reply автоматически - пользователь должен закрыть панель вручную - // Это позволяет сохранить текст в reply инпуте после отправки - // clearReplyMessages() - вызывается только при клике на крестик + // 🔥 Очищаем reply после отправки - данные сохраняются в displayReplyMessages для анимации + clearReplyMessages() // Кэшируем текст decryptionCache[messageId] = text