From b9e9d0ccd1e4dc15fca38469ca15272db62c40d1 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 26 May 2025 15:52:20 +0200 Subject: [PATCH] show selected participants when clicking on add button Signed-off-by: sowjanyakch --- .../java/com/nextcloud/talk/contacts/ContactsScreen.kt | 6 +++++- .../com/nextcloud/talk/contacts/ContactsViewModel.kt | 9 +++++++-- .../com/nextcloud/talk/contacts/components/AppBar.kt | 4 +++- 3 files changed, 15 insertions(+), 4 deletions(-) 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 d2dffcbd1..115ee392b 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsScreen.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsScreen.kt @@ -31,6 +31,7 @@ fun ContactsScreen(contactsViewModel: ContactsViewModel, uiState: ContactsUiStat val autocompleteUsers by contactsViewModel.selectedParticipantsList.collectAsStateWithLifecycle() val enableAddButton by contactsViewModel.enableAddButton.collectAsStateWithLifecycle() + Scaffold( topBar = { AppBar( @@ -51,7 +52,10 @@ fun ContactsScreen(contactsViewModel: ContactsViewModel, uiState: ContactsUiStat onUpdateAutocompleteUsers = { contactsViewModel.getContactsFromSearchParams() }, - enableAddButton = enableAddButton + enableAddButton = enableAddButton, + clickAddButton = { + contactsViewModel.modifyClickAddButton(it) + } ) }, 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 73d8c1a94..2f47711c5 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsViewModel.kt @@ -41,6 +41,8 @@ class ContactsViewModel @Inject constructor( private val _selectedContacts = MutableStateFlow>(emptyList()) + private val _clickAddButton = MutableStateFlow(false) + private var hideAlreadyAddedParticipants: Boolean = false init { @@ -51,6 +53,10 @@ class ContactsViewModel @Inject constructor( _searchQuery.value = query } + fun modifyClickAddButton(value:Boolean){ + _clickAddButton.value = value + } + fun selectContact(contact: AutocompleteUser) { val updatedParticipants = selectedParticipants.value + contact selectedParticipants.value = updatedParticipants @@ -101,10 +107,9 @@ class ContactsViewModel @Inject constructor( ) val contactsList: MutableList? = contacts.ocs!!.data?.toMutableList() - if (hideAlreadyAddedParticipants) { + if (hideAlreadyAddedParticipants && !_clickAddButton.value) { contactsList?.removeAll(selectedParticipants.value) } - _contactsViewState.value = ContactsUiState.Success(contactsList) } catch (exception: Exception) { _contactsViewState.value = ContactsUiState.Error(exception.message ?: "") 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 df41601fe..a163abb94 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 @@ -43,7 +43,8 @@ fun AppBar( onDisableSearch: () -> Unit, onUpdateSearchQuery: (String) -> Unit, onUpdateAutocompleteUsers: () -> Unit, - enableAddButton: Boolean + enableAddButton: Boolean, + clickAddButton:(Boolean) -> Unit ) { val context = LocalContext.current @@ -97,6 +98,7 @@ fun AppBar( onClick = { onDisableSearch() onUpdateSearchQuery("") + clickAddButton(true) onUpdateAutocompleteUsers() }, enabled = enableAddButton