Fix recipient search bar configuration for add to groups screen.

This commit is contained in:
jeffrey-signal
2025-11-25 15:32:02 -05:00
parent d2c3861ac7
commit 1a5163fc47
4 changed files with 40 additions and 19 deletions

View File

@@ -28,12 +28,12 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.IconButtons.IconButton
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.recipients.ui.RecipientPicker.KeyboardType
/**
* A search input field for finding recipients.
@@ -47,15 +47,15 @@ fun RecipientSearchBar(
query: String,
onQueryChange: (String) -> Unit,
onSearch: (String) -> Unit,
modifier: Modifier = Modifier
modifier: Modifier = Modifier,
enabledKeyboardTypes: List<KeyboardType> = listOf(KeyboardType.Text, KeyboardType.Phone)
) {
val state = rememberSearchBarState()
var keyboardOptions by remember {
mutableStateOf(
KeyboardOptions(
keyboardType = KeyboardType.Text,
imeAction = ImeAction.Search
)
var keyboardType by remember(enabledKeyboardTypes) { mutableStateOf(enabledKeyboardTypes.first()) }
val keyboardOptions = remember(keyboardType) {
KeyboardOptions(
keyboardType = keyboardType.wrappedType,
imeAction = ImeAction.Search
)
}
@@ -87,10 +87,11 @@ fun RecipientSearchBar(
onClearQuery = { onQueryChange("") },
modifier = modifier
)
} else {
} else if (enabledKeyboardTypes.size > 1) {
KeyboardToggleButton(
keyboardType = keyboardOptions.keyboardType,
onKeyboardTypeChange = { keyboardOptions = keyboardOptions.copy(keyboardType = it) },
keyboardType = keyboardType,
enabledKeyboardTypes = enabledKeyboardTypes,
onKeyboardTypeChange = { keyboardType = it },
modifier = modifier
)
}
@@ -104,17 +105,20 @@ fun RecipientSearchBar(
@Composable
private fun KeyboardToggleButton(
keyboardType: KeyboardType,
enabledKeyboardTypes: List<KeyboardType>,
onKeyboardTypeChange: (KeyboardType) -> Unit = {},
modifier: Modifier = Modifier
) {
val nextTypeMap = remember(enabledKeyboardTypes) {
enabledKeyboardTypes.mapIndexed { index, type ->
val nextIndex = (index + 1) % enabledKeyboardTypes.size
type to enabledKeyboardTypes[nextIndex]
}.toMap()
}
IconButton(
onClick = {
onKeyboardTypeChange(
when (keyboardType) {
KeyboardType.Text -> KeyboardType.Phone
else -> KeyboardType.Text
}
)
onKeyboardTypeChange(nextTypeMap.getValue(keyboardType))
},
modifier = modifier
) {
@@ -125,7 +129,7 @@ private fun KeyboardToggleButton(
contentDescription = stringResource(R.string.RecipientSearchBar_accessibility_switch_to_numeric_keyboard)
)
else -> Icon(
KeyboardType.Phone -> Icon(
imageVector = ImageVector.vectorResource(R.drawable.ic_keyboard_24),
tint = MaterialTheme.colorScheme.onSurface,
contentDescription = stringResource(R.string.RecipientSearchBar_accessibility_switch_to_alphanumeric_keyboard)