feat: Preserve keyboard height when closing to restore emoji height
This commit is contained in:
@@ -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)")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user