mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Fix recipient search bar configuration for add to groups screen.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user