diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index bcd2cf4152..ff29fbf087 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -318,7 +318,6 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a suspend fun changeActiveUser_(toUserId: Long, viewPwd: String?) { val currentUser = apiSetActiveUser(toUserId, viewPwd) chatModel.currentUser.value = currentUser - Log.e(TAG, "currentUser ${currentUser?.userId}") val users = listUsers() chatModel.users.clear() chatModel.users.addAll(users) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt index 827542c68a..8544fdc435 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultTopAppBar.kt @@ -34,7 +34,7 @@ fun DefaultTopAppBar( if (!showSearch) { title?.invoke() } else { - SearchTextField(Modifier.fillMaxWidth(), stringResource(android.R.string.search_go), onSearchValueChanged) + SearchTextField(Modifier.fillMaxWidth(), stringResource(android.R.string.search_go), alwaysVisible = false, onSearchValueChanged) } }, backgroundColor = if (isInDarkTheme()) ToolbarDark else ToolbarLight, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt index 261d4f8acc..38c6a2647b 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/SearchTextField.kt @@ -17,6 +17,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.* +import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle @@ -29,15 +30,18 @@ import kotlinx.coroutines.delay @OptIn(ExperimentalComposeUiApi::class) @Composable -fun SearchTextField(modifier: Modifier, placeholder: String, onValueChange: (String) -> Unit) { +fun SearchTextField(modifier: Modifier, placeholder: String, alwaysVisible: Boolean, onValueChange: (String) -> Unit) { var searchText by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue("")) } val focusRequester = remember { FocusRequester() } + val focusManager = LocalFocusManager.current val keyboard = LocalSoftwareKeyboardController.current - LaunchedEffect(Unit) { - focusRequester.requestFocus() - delay(200) - keyboard?.show() + if (!alwaysVisible) { + LaunchedEffect(Unit) { + focusRequester.requestFocus() + delay(200) + keyboard?.show() + } } DisposableEffect(Unit) { @@ -87,7 +91,14 @@ fun SearchTextField(modifier: Modifier, placeholder: String, onValueChange: (Str Text(placeholder) }, trailingIcon = if (searchText.text.isNotEmpty()) {{ - IconButton({ searchText = TextFieldValue(""); onValueChange("") }) { + IconButton({ + if (alwaysVisible) { + keyboard?.hide() + focusManager.clearFocus() + } + searchText = TextFieldValue(""); + onValueChange("") + }) { Icon(Icons.Default.Close, stringResource(R.string.icon_descr_close_button), tint = MaterialTheme.colors.primary,) } }} else null, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt index f017798545..27c6add259 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt @@ -65,19 +65,11 @@ fun SettingsView(chatModel: ChatModel, setPerformLA: (Boolean) -> Unit) { showSettingsModalWithSearch = { modalView -> ModalManager.shared.showCustomModal { close -> val search = rememberSaveable { mutableStateOf("") } - var showSearch by rememberSaveable { mutableStateOf(false) } ModalView( - { if (showSearch) { showSearch = false } else close() }, + { close() }, if (isInDarkTheme()) MaterialTheme.colors.background else SettingsBackgroundLight, endButtons = { - if (!showSearch) { - IconButton({ showSearch = true }) { - Icon(Icons.Outlined.Search, stringResource(android.R.string.search_go).capitalize(Locale.current), tint = MaterialTheme.colors.primary) - } - } else { - BackHandler { showSearch = false } - SearchTextField(Modifier.fillMaxWidth(), stringResource(android.R.string.search_go)) { search.value = it } - } + SearchTextField(Modifier.fillMaxWidth(), stringResource(android.R.string.search_go), alwaysVisible = true) { search.value = it } }, content = { modalView(chatModel, search) }) }