feat: Preserve keyboard height when closing to restore emoji height

This commit is contained in:
k1ngsterr1
2026-01-15 12:16:09 +05:00
parent 9f4e85d64a
commit 1000f017f5

View File

@@ -55,6 +55,9 @@ class KeyboardTransitionCoordinator {
var keyboardHeight by mutableStateOf(0.dp)
var emojiHeight by mutableStateOf(0.dp)
// 🔥 Сохраняем максимальную высоту клавиатуры для правильного восстановления emoji
private var maxKeyboardHeight by mutableStateOf(0.dp)
// ============ Флаги видимости ============
var isKeyboardVisible by mutableStateOf(false)
@@ -262,17 +265,36 @@ class KeyboardTransitionCoordinator {
fun updateKeyboardHeight(height: Dp) {
Log.d(TAG, "════════════════════════════════════════════════════════")
Log.d(TAG, "📏 updateKeyboardHeight called: $keyboardHeight$height")
Log.d(TAG, " isKeyboardVisible=$isKeyboardVisible, emojiHeight=$emojiHeight")
Log.d(TAG, " isKeyboardVisible=$isKeyboardVisible, emojiHeight=$emojiHeight, maxHeight=$maxKeyboardHeight")
if (height > 100.dp && height != keyboardHeight) {
Log.d(TAG, "✅ Keyboard height updated: $keyboardHeight$height")
keyboardHeight = height
// 🔥 Сохраняем максимальную высоту
if (height > maxKeyboardHeight) {
Log.d(TAG, "📊 Updating max height: $maxKeyboardHeight$height")
maxKeyboardHeight = height
}
// Если emoji высота не установлена, синхронизировать
if (emojiHeight == 0.dp) {
Log.d(TAG, "🔄 Syncing emoji height (was 0): $emojiHeight$height")
emojiHeight = height
}
} else if (height == 0.dp && keyboardHeight != 0.dp) {
// 🔥 Клавиатура закрывается - восстанавливаем emojiHeight до МАКСИМАЛЬНОЙ высоты
Log.d(TAG, "⌨️ Keyboard closing, restoring emoji height to max")
Log.d(TAG, " Before: keyboardHeight=$keyboardHeight, emojiHeight=$emojiHeight, maxHeight=$maxKeyboardHeight")
// Восстанавливаем emojiHeight до максимальной высоты
if (maxKeyboardHeight > 0.dp) {
emojiHeight = maxKeyboardHeight
Log.d(TAG, " After: emojiHeight restored to $maxKeyboardHeight")
}
// Обнуляем keyboardHeight только после восстановления emoji
keyboardHeight = 0.dp
} else {
Log.d(TAG, "⏭️ No update needed (height too small or unchanged)")
}