Закрытие клавиатуры на звонке
This commit is contained in:
@@ -20,7 +20,12 @@ import androidx.compose.runtime.*
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.platform.LocalFocusManager
|
||||||
|
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
||||||
|
import androidx.compose.ui.platform.LocalView
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.google.firebase.FirebaseApp
|
import com.google.firebase.FirebaseApp
|
||||||
@@ -586,6 +591,9 @@ fun MainScreen(
|
|||||||
|
|
||||||
// Load username AND name from AccountManager (persisted in DataStore)
|
// Load username AND name from AccountManager (persisted in DataStore)
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
|
val keyboardController = LocalSoftwareKeyboardController.current
|
||||||
|
val focusManager = LocalFocusManager.current
|
||||||
|
val rootView = LocalView.current
|
||||||
val callScope = rememberCoroutineScope()
|
val callScope = rememberCoroutineScope()
|
||||||
val callUiState by CallManager.state.collectAsState()
|
val callUiState by CallManager.state.collectAsState()
|
||||||
var pendingOutgoingCall by remember { mutableStateOf<SearchUser?>(null) }
|
var pendingOutgoingCall by remember { mutableStateOf<SearchUser?>(null) }
|
||||||
@@ -757,6 +765,20 @@ fun MainScreen(
|
|||||||
CallManager.bindAccount(accountPublicKey)
|
CallManager.bindAccount(accountPublicKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LaunchedEffect(callUiState.isVisible) {
|
||||||
|
if (callUiState.isVisible) {
|
||||||
|
keyboardController?.hide()
|
||||||
|
focusManager.clearFocus(force = true)
|
||||||
|
|
||||||
|
// Fallback for cases where IME survives focus reset due to window transitions.
|
||||||
|
val activity = rootView.context as? android.app.Activity
|
||||||
|
activity?.window?.let { window ->
|
||||||
|
WindowCompat.getInsetsController(window, rootView)
|
||||||
|
?.hide(WindowInsetsCompat.Type.ime())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LaunchedEffect(accountPublicKey, reloadTrigger) {
|
LaunchedEffect(accountPublicKey, reloadTrigger) {
|
||||||
if (accountPublicKey.isNotBlank()) {
|
if (accountPublicKey.isNotBlank()) {
|
||||||
val accountManager = AccountManager(context)
|
val accountManager = AccountManager(context)
|
||||||
|
|||||||
Reference in New Issue
Block a user