diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivityV2.kt index c422e7d933..8e641caa68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivityV2.kt @@ -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 {