From ffc823285c8cb280a0592680d5067d822071b5de Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Wed, 14 Jan 2026 03:03:27 +0500 Subject: [PATCH] feat: Add animated padding for message list when emoji picker is open --- .../messenger/ui/chats/ChatDetailScreen.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 8b88dee..1eeb36c 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 @@ -258,6 +258,13 @@ fun ChatDetailScreen( // 🔥 Высота панели эмодзи = сохранённая высота клавиатуры (минимум 280.dp) val emojiPanelHeight = maxOf(savedKeyboardHeight, 280.dp) + // 🔥 Анимированный отступ для списка сообщений когда emoji picker открыт + val emojiPanelPadding by animateDpAsState( + targetValue = if (showEmojiPicker && imeHeight < 50.dp) emojiPanelHeight else 0.dp, + animationSpec = tween(120, easing = FastOutSlowInEasing), + label = "emojiPanelPadding" + ) + // 🔥 Reply/Forward state val replyMessages by viewModel.replyMessages.collectAsState() val hasReply = replyMessages.isNotEmpty() @@ -1049,7 +1056,13 @@ fun ChatDetailScreen( .background(backgroundColor) ) { // Список сообщений - занимает всё доступное место - Box(modifier = Modifier.weight(1f).fillMaxWidth()) { + // 🔥 Добавляем padding снизу когда emoji picker открыт (keyboard avoiding) + Box( + modifier = Modifier + .weight(1f) + .fillMaxWidth() + .padding(bottom = emojiPanelPadding) + ) { when { // 🔥 СКЕЛЕТОН - показываем пока загружаются сообщения isLoading -> {