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 keyboardHeight by mutableStateOf(0.dp)
|
||||||
var emojiHeight by mutableStateOf(0.dp)
|
var emojiHeight by mutableStateOf(0.dp)
|
||||||
|
|
||||||
|
// 🔥 Сохраняем максимальную высоту клавиатуры для правильного восстановления emoji
|
||||||
|
private var maxKeyboardHeight by mutableStateOf(0.dp)
|
||||||
|
|
||||||
// ============ Флаги видимости ============
|
// ============ Флаги видимости ============
|
||||||
|
|
||||||
var isKeyboardVisible by mutableStateOf(false)
|
var isKeyboardVisible by mutableStateOf(false)
|
||||||
@@ -262,17 +265,36 @@ class KeyboardTransitionCoordinator {
|
|||||||
fun updateKeyboardHeight(height: Dp) {
|
fun updateKeyboardHeight(height: Dp) {
|
||||||
Log.d(TAG, "════════════════════════════════════════════════════════")
|
Log.d(TAG, "════════════════════════════════════════════════════════")
|
||||||
Log.d(TAG, "📏 updateKeyboardHeight called: $keyboardHeight → $height")
|
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) {
|
if (height > 100.dp && height != keyboardHeight) {
|
||||||
Log.d(TAG, "✅ Keyboard height updated: $keyboardHeight → $height")
|
Log.d(TAG, "✅ Keyboard height updated: $keyboardHeight → $height")
|
||||||
keyboardHeight = height
|
keyboardHeight = height
|
||||||
|
|
||||||
|
// 🔥 Сохраняем максимальную высоту
|
||||||
|
if (height > maxKeyboardHeight) {
|
||||||
|
Log.d(TAG, "📊 Updating max height: $maxKeyboardHeight → $height")
|
||||||
|
maxKeyboardHeight = height
|
||||||
|
}
|
||||||
|
|
||||||
// Если emoji высота не установлена, синхронизировать
|
// Если emoji высота не установлена, синхронизировать
|
||||||
if (emojiHeight == 0.dp) {
|
if (emojiHeight == 0.dp) {
|
||||||
Log.d(TAG, "🔄 Syncing emoji height (was 0): $emojiHeight → $height")
|
Log.d(TAG, "🔄 Syncing emoji height (was 0): $emojiHeight → $height")
|
||||||
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 {
|
} else {
|
||||||
Log.d(TAG, "⏭️ No update needed (height too small or unchanged)")
|
Log.d(TAG, "⏭️ No update needed (height too small or unchanged)")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user