mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 00:59:49 +01:00
Prevent soft keyboard from covering recipient picker floating action button.
This commit is contained in:
@@ -11,9 +11,7 @@ import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
@@ -21,7 +19,6 @@ import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@@ -150,47 +147,49 @@ private fun AddToGroupsScreenUi(
|
||||
onDismiss = callbacks::onUserMessageDismissed,
|
||||
closeScreen = callbacks::onBackPressed
|
||||
)
|
||||
}
|
||||
},
|
||||
floatingActionButton = getDoneButton(uiState, callbacks)
|
||||
)
|
||||
}
|
||||
|
||||
private fun getDoneButton(
|
||||
uiState: AddToGroupsUiState,
|
||||
callbacks: UiCallbacks
|
||||
): (@Composable () -> Unit)? {
|
||||
return if (uiState.isMultiSelectEnabled) {
|
||||
{
|
||||
Buttons.MediumTonal(
|
||||
enabled = uiState.newSelections.isNotEmpty(),
|
||||
onClick = callbacks::addToSelectedGroups
|
||||
) {
|
||||
Text(text = stringResource(R.string.AddMembersActivity__done))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun AddToGroupsRecipientPicker(
|
||||
uiState: AddToGroupsUiState,
|
||||
callbacks: UiCallbacks,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
Box(modifier = modifier) {
|
||||
RecipientPicker(
|
||||
searchQuery = uiState.searchQuery,
|
||||
displayModes = setOf(RecipientPicker.DisplayMode.ACTIVE_GROUPS, RecipientPicker.DisplayMode.GROUPS_AFTER_CONTACTS),
|
||||
selectionLimits = uiState.selectionLimits,
|
||||
preselectedRecipients = uiState.existingGroupMemberships,
|
||||
includeRecents = true,
|
||||
isRefreshing = false,
|
||||
listBottomPadding = 64.dp,
|
||||
clipListToPadding = false,
|
||||
callbacks = RecipientPickerCallbacks(
|
||||
listActions = callbacks
|
||||
),
|
||||
modifier = modifier.fillMaxSize()
|
||||
)
|
||||
|
||||
if (uiState.isMultiSelectEnabled) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.align(Alignment.BottomEnd)
|
||||
.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)
|
||||
) {
|
||||
Buttons.MediumTonal(
|
||||
enabled = uiState.newSelections.isNotEmpty(),
|
||||
onClick = callbacks::addToSelectedGroups
|
||||
) {
|
||||
Text(text = stringResource(R.string.AddMembersActivity__done))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
RecipientPicker(
|
||||
searchQuery = uiState.searchQuery,
|
||||
displayModes = setOf(RecipientPicker.DisplayMode.ACTIVE_GROUPS, RecipientPicker.DisplayMode.GROUPS_AFTER_CONTACTS),
|
||||
selectionLimits = uiState.selectionLimits,
|
||||
preselectedRecipients = uiState.existingGroupMemberships,
|
||||
includeRecents = true,
|
||||
isRefreshing = false,
|
||||
listBottomPadding = 64.dp,
|
||||
clipListToPadding = false,
|
||||
callbacks = RecipientPickerCallbacks(
|
||||
listActions = callbacks
|
||||
),
|
||||
modifier = modifier.fillMaxSize()
|
||||
)
|
||||
}
|
||||
|
||||
private interface UiCallbacks : RecipientPickerCallbacks.ListActions {
|
||||
|
||||
Reference in New Issue
Block a user