diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsView.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsView.kt index 4c44c2727..0951b53b0 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsView.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsView.kt @@ -143,7 +143,7 @@ class ContactsView(private val bundle: Bundle? = null) : BaseView() { }) viewModel.apply { - searchQueryLiveData.observe(this@ContactsView) { query -> + filterLiveData.observe(this@ContactsView) { query -> if (!transitionInProgress) { activity?.clearButton?.isVisible = !query.isNullOrEmpty() } @@ -235,7 +235,7 @@ class ContactsView(private val bundle: Bundle? = null) : BaseView() { } private fun setSearchQuery(query: CharSequence?) { - viewModel.setSearchQuery(query.toString()) + viewModel.setSearchQuery(query) } override fun onFloatingActionButtonClick() { diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsViewModel.kt index 2266bba3d..bddcb4fb5 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/contacts/ContactsViewModel.kt @@ -40,7 +40,6 @@ import com.nextcloud.talk.newarch.features.contactsflow.ContactsViewOperationSta import com.nextcloud.talk.newarch.features.contactsflow.ParticipantElement import com.nextcloud.talk.newarch.features.conversationslist.ConversationsListView import com.nextcloud.talk.newarch.services.GlobalService -import kotlinx.coroutines.isActive import kotlinx.coroutines.runBlocking import org.koin.core.parameter.parametersOf @@ -58,13 +57,9 @@ class ContactsViewModel constructor( private val _operationState = MutableLiveData(ContactsViewOperationStateWrapper(ContactsViewOperationState.WAITING, null, null)) val operationState: LiveData = _operationState.distinctUntilChanged() - private var searchQuery: MutableLiveData = MutableLiveData() - var searchQueryLiveData: LiveData = Transformations.switchMap(searchQuery) { searchQuery -> - if (initialized) { - loadContacts() - } - liveData { searchQuery } - } + private val filterMutableLiveData: MutableLiveData = MutableLiveData(null) + val filterLiveData: LiveData = filterMutableLiveData + private var conversationToken: String? = null private var groupConversation: Boolean = false private var initialized = false @@ -77,8 +72,9 @@ class ContactsViewModel constructor( } } - fun setSearchQuery(query: String?) { - searchQuery.postValue(query) + fun setSearchQuery(query: CharSequence?) { + filterMutableLiveData.postValue(query) + loadContacts() } fun selectParticipant(participant: Participant) { @@ -138,7 +134,7 @@ class ContactsViewModel constructor( } private fun loadContacts() { - getContactsUseCase.invoke(viewModelScope, parametersOf(globalService.currentUserLiveData.value, groupConversation, searchQuery.value, conversationToken), object : + getContactsUseCase.invoke(viewModelScope, parametersOf(globalService.currentUserLiveData.value, groupConversation, filterLiveData.value, conversationToken), object : UseCaseResponse> { override suspend fun onSuccess(result: List) { val sortPriority = mapOf("users" to 0, "groups" to 1, "emails" to 2, "circles" to 0) @@ -161,7 +157,7 @@ class ContactsViewModel constructor( } as MutableList - if (conversationToken.isNullOrEmpty() && searchQuery.value.isNullOrEmpty()) { + if (conversationToken.isNullOrEmpty() && filterLiveData.value.isNullOrEmpty()) { val newGroupElement = ParticipantElement(Pair(context.getString(R.string.nc_new_group), R.drawable.ic_people_group_white_24px), ParticipantElementType.PARTICIPANT_NEW_GROUP.ordinal) participantElementsList.add(0, newGroupElement) }