feat: Implement automatic keyboard hiding on screen exit for improved user experience

This commit is contained in:
k1ngsterr1
2026-01-13 21:07:07 +05:00
parent f155c4d36d
commit 912412bd56
8 changed files with 467 additions and 344 deletions

View File

@@ -26,6 +26,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.rosetta.messenger.ui.onboarding.PrimaryBlue
import com.rosetta.messenger.ui.components.HideKeyboardOnDispose
// Beautiful solid colors that fit the theme
private val wordColors = listOf(
@@ -50,6 +51,9 @@ fun ConfirmSeedPhraseScreen(
onBack: () -> Unit,
onConfirmed: () -> Unit
) {
// 🔥 Автоматическое скрытие клавиатуры при выходе с экрана
HideKeyboardOnDispose()
val backgroundColor = if (isDarkTheme) Color(0xFF1E1E1E) else Color(0xFFFFFFFF)
val textColor = if (isDarkTheme) Color.White else Color.Black
val secondaryTextColor = if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666)

View File

@@ -22,6 +22,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.rosetta.messenger.ui.onboarding.PrimaryBlue
import com.rosetta.messenger.ui.components.HideKeyboardOnDispose
data class AccountInfo(
val id: String,
@@ -63,6 +64,9 @@ fun SelectAccountScreen(
onImportSeed: () -> Unit,
onDismissModal: () -> Unit
) {
// 🔥 Автоматическое скрытие клавиатуры при выходе с экрана
HideKeyboardOnDispose()
val backgroundColor = if (isDarkTheme) Color(0xFF1E1E1E) else Color(0xFFFFFFFF)
val textColor = if (isDarkTheme) Color.White else Color.Black
val secondaryTextColor = if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666)

View File

@@ -31,6 +31,7 @@ import com.rosetta.messenger.data.DecryptedAccount
import com.rosetta.messenger.data.EncryptedAccount
import com.rosetta.messenger.network.ProtocolManager
import com.rosetta.messenger.ui.onboarding.PrimaryBlue
import com.rosetta.messenger.ui.components.HideKeyboardOnDispose
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class)
@@ -41,6 +42,9 @@ fun SetPasswordScreen(
onBack: () -> Unit,
onAccountCreated: (DecryptedAccount) -> Unit
) {
// 🔥 Автоматическое скрытие клавиатуры при выходе с экрана
HideKeyboardOnDispose()
val themeAnimSpec = tween<Color>(durationMillis = 500, easing = CubicBezierEasing(0.4f, 0f, 0.2f, 1f))
val backgroundColor by animateColorAsState(if (isDarkTheme) AuthBackground else AuthBackgroundLight, animationSpec = themeAnimSpec)
val textColor by animateColorAsState(if (isDarkTheme) Color.White else Color.Black, animationSpec = themeAnimSpec)

View File

@@ -42,6 +42,7 @@ import com.rosetta.messenger.network.ProtocolManager
import com.rosetta.messenger.ui.onboarding.PrimaryBlue
import com.rosetta.messenger.ui.chats.getAvatarColor
import com.rosetta.messenger.ui.chats.getAvatarText
import com.rosetta.messenger.ui.components.HideKeyboardOnDispose
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
@@ -60,6 +61,9 @@ fun UnlockScreen(
onUnlocked: (DecryptedAccount) -> Unit,
onSwitchAccount: () -> Unit = {}
) {
// 🔥 Автоматическое скрытие клавиатуры при выходе с экрана
HideKeyboardOnDispose()
val themeAnimSpec = tween<Color>(durationMillis = 500, easing = CubicBezierEasing(0.4f, 0f, 0.2f, 1f))
val backgroundColor by animateColorAsState(if (isDarkTheme) AuthBackground else AuthBackgroundLight, animationSpec = themeAnimSpec)
val textColor by animateColorAsState(if (isDarkTheme) Color.White else Color.Black, animationSpec = themeAnimSpec)