diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt index e80927644..ea8d8110d 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt @@ -67,7 +67,6 @@ class ContactsView(private val bundle: Bundle? = null) : BaseView() { setHasOptionsMenu(true) viewModel = viewModelProvider(factory).get(ContactsViewModel::class.java) - viewModel.conversationToken = bundle?.getString(BundleKeys.KEY_CONVERSATION_TOKEN) val view = super.onCreateView(inflater, container) // todo - change empty state magic @@ -137,7 +136,7 @@ class ContactsView(private val bundle: Bundle? = null) : BaseView() { } - viewModel.loadContacts() + viewModel.initialize(bundle?.getString(BundleKeys.KEY_CONVERSATION_TOKEN)) return view } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt index d1052c93d..f69db06e4 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt @@ -44,7 +44,15 @@ class ContactsViewModel constructor( val contactsLiveData: MutableLiveData> = MutableLiveData() private var searchQuery: String? = null - var conversationToken: String? = null + private var conversationToken: String? = null + private var initialized = false + + fun initialize(conversationToken: String?) { + if (!initialized || conversationToken != this.conversationToken) { + this.conversationToken = conversationToken + loadContacts() + } + } fun setSearchQuery(query: String?) { searchQuery = query @@ -77,6 +85,13 @@ class ContactsViewModel constructor( it.displayName.toLowerCase() })) + val selectedUserIds = selectedParticipants.map { it.userId } + for (participant in sortedList) { + if (participant.userId in selectedUserIds) { + participant.selected = true + } + } + contactsLiveData.postValue(sortedList) }