# Исправление закрытия диалога выбора реакции ## Проблема После добавления реакции на сообщение диалог выбора эмодзи не закрывался, что создавало плохой пользовательский опыт. ## Решение Были внесены следующие изменения: ### 1. Исправление в MessageAdapter.kt - Добавлен вызов `dialog.dismiss()` в обработчик клика по эмодзи - Добавлен новый callback `onReactionAdded` для принудительного обновления сообщений ### 2. Исправление в ChatViewModel.kt - Добавлена проверка реакций в методе `hasMessagesChanged()` - Добавлено принудительное обновление сообщений после добавления/удаления реакции ### 3. Исправление в ChatActivity.kt - Добавлен callback `onReactionAdded` для принудительного обновления сообщений - Реализована логика принудительного обновления сообщений после добавления реакции ## Технические детали ### MessageAdapter.kt ```kotlin // В обработчике клика по эмодзи добавлено: setOnItemClickListener { onAddReaction?.invoke(message, emoji) // Dismiss the dialog dialog.dismiss() } ``` ### ChatViewModel.kt ```kotlin // В методе hasMessagesChanged() добавлена проверка реакций: // Compare reactions (this affects message display) val currentReactions = current.reactions ?: emptyList() val newReactions = new.reactions ?: emptyList() if (currentReactions.size != newReactions.size) { return true } // Compare reaction content (emoji and who reacted) val currentReactionsSorted = currentReactions.sortedBy { it.id } val newReactionsSorted = newReactions.sortedBy { it.id } for (k in currentReactionsSorted.indices) { val currentReaction = currentReactionsSorted[k] val newReaction = newReactionsSorted.getOrNull(k) ?: return true if (currentReaction.id != newReaction.id || currentReaction.reaction != newReaction.reaction || currentReaction.chatUserId != newReaction.chatUserId) { return true } } ``` ### ChatActivity.kt ```kotlin // Добавлен callback для принудительного обновления: onReactionAdded = { // Force refresh messages after reaction is added shouldScrollAfterRefresh = true viewModel.refreshMessages() } ``` ## Результат - Диалог выбора эмодзи теперь закрывается сразу после выбора - Сообщения обновляются в реальном времени после добавления реакции - Улучшен пользовательский опыт при работе с реакциями ## Тестирование 1. Открыть чат 2. Долгое нажатие на сообщение → "Добавить реакцию" 3. Выбрать эмодзи 4. Убедиться, что диалог закрывается 5. Проверить, что реакция отображается на сообщении