feat: Add animated padding for message list when emoji picker is open

This commit is contained in:
k1ngsterr1
2026-01-14 03:03:27 +05:00
parent f439c17740
commit ffc823285c

View File

@@ -258,6 +258,13 @@ fun ChatDetailScreen(
// 🔥 Высота панели эмодзи = сохранённая высота клавиатуры (минимум 280.dp) // 🔥 Высота панели эмодзи = сохранённая высота клавиатуры (минимум 280.dp)
val emojiPanelHeight = maxOf(savedKeyboardHeight, 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 // 🔥 Reply/Forward state
val replyMessages by viewModel.replyMessages.collectAsState() val replyMessages by viewModel.replyMessages.collectAsState()
val hasReply = replyMessages.isNotEmpty() val hasReply = replyMessages.isNotEmpty()
@@ -1049,7 +1056,13 @@ fun ChatDetailScreen(
.background(backgroundColor) .background(backgroundColor)
) { ) {
// Список сообщений - занимает всё доступное место // Список сообщений - занимает всё доступное место
Box(modifier = Modifier.weight(1f).fillMaxWidth()) { // 🔥 Добавляем padding снизу когда emoji picker открыт (keyboard avoiding)
Box(
modifier = Modifier
.weight(1f)
.fillMaxWidth()
.padding(bottom = emojiPanelPadding)
) {
when { when {
// 🔥 СКЕЛЕТОН - показываем пока загружаются сообщения // 🔥 СКЕЛЕТОН - показываем пока загружаются сообщения
isLoading -> { isLoading -> {