diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsScreen.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsScreen.kt index 69d70306d..d2dffcbd1 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsScreen.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsScreen.kt @@ -29,6 +29,7 @@ fun ContactsScreen(contactsViewModel: ContactsViewModel, uiState: ContactsUiStat val isSearchActive by contactsViewModel.isSearchActive.collectAsStateWithLifecycle() val isAddParticipants by contactsViewModel.isAddParticipantsView.collectAsStateWithLifecycle() val autocompleteUsers by contactsViewModel.selectedParticipantsList.collectAsStateWithLifecycle() + val enableAddButton by contactsViewModel.enableAddButton.collectAsStateWithLifecycle() Scaffold( topBar = { @@ -49,7 +50,8 @@ fun ContactsScreen(contactsViewModel: ContactsViewModel, uiState: ContactsUiStat }, onUpdateAutocompleteUsers = { contactsViewModel.getContactsFromSearchParams() - } + }, + enableAddButton = enableAddButton ) }, content = { diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsViewModel.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsViewModel.kt index 7d495226b..73d8c1a94 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsViewModel.kt @@ -36,6 +36,11 @@ class ContactsViewModel @Inject constructor( private val _isAddParticipantsView = MutableStateFlow(false) val isAddParticipantsView: StateFlow = _isAddParticipantsView + private val _enableAddButton = MutableStateFlow(false) + val enableAddButton: StateFlow = _enableAddButton + + private val _selectedContacts = MutableStateFlow>(emptyList()) + private var hideAlreadyAddedParticipants: Boolean = false init { @@ -49,11 +54,21 @@ class ContactsViewModel @Inject constructor( fun selectContact(contact: AutocompleteUser) { val updatedParticipants = selectedParticipants.value + contact selectedParticipants.value = updatedParticipants + _selectedContacts.value = _selectedContacts.value + contact + } + + fun updateAddButtonState() { + if (_selectedContacts.value.isEmpty()) { + _enableAddButton.value = false + } else { + _enableAddButton.value = true + } } fun deselectContact(contact: AutocompleteUser) { val updatedParticipants = selectedParticipants.value - contact selectedParticipants.value = updatedParticipants + _selectedContacts.value = _selectedContacts.value - contact } fun updateSelectedParticipants(participants: List) { diff --git a/app/src/main/java/com/nextcloud/talk/contacts/components/AppBar.kt b/app/src/main/java/com/nextcloud/talk/contacts/components/AppBar.kt index ecd40e595..d259c0ca5 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/components/AppBar.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/components/AppBar.kt @@ -42,7 +42,8 @@ fun AppBar( onEnableSearch: () -> Unit, onDisableSearch: () -> Unit, onUpdateSearchQuery: (String) -> Unit, - onUpdateAutocompleteUsers: () -> Unit + onUpdateAutocompleteUsers: () -> Unit, + enableAddButton: Boolean ) { val context = LocalContext.current @@ -96,11 +97,11 @@ fun AppBar( onClick = { onDisableSearch() onUpdateSearchQuery("") - } + }, + enabled = enableAddButton ) { Text(text = context.getString(R.string.add_participants)) } - } else { } } } diff --git a/app/src/main/java/com/nextcloud/talk/contacts/components/ContactItemRow.kt b/app/src/main/java/com/nextcloud/talk/contacts/components/ContactItemRow.kt index e45afd291..05cd8431c 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/components/ContactItemRow.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/components/ContactItemRow.kt @@ -65,8 +65,10 @@ fun ContactItemRow(contact: AutocompleteUser, contactsViewModel: ContactsViewMod isSelected = !isSelected if (isSelected) { contactsViewModel.selectContact(contact) + contactsViewModel.updateAddButtonState() } else { contactsViewModel.deselectContact(contact) + contactsViewModel.updateAddButtonState() } } } diff --git a/app/src/main/java/com/nextcloud/talk/contacts/components/SearchComponent.kt b/app/src/main/java/com/nextcloud/talk/contacts/components/SearchComponent.kt index 191468286..79518353b 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/components/SearchComponent.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/components/SearchComponent.kt @@ -109,9 +109,3 @@ fun searchKeyboardActions(text: String, keyboardController: SoftwareKeyboardCont } } ) - -class SearchComponentCompanionClass { - companion object { - const val WIDTH_RATIO = 0.85f - } -}