From 3e7e2000d5efdb0cd91de7ff4cb0e22ab119cbf6 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 29 Nov 2023 09:40:25 +0100 Subject: [PATCH] Fixed favourite status in contacts list not matching reality after a change --- .../linphone/ui/main/contacts/adapter/ContactsListAdapter.kt | 1 + .../ui/main/contacts/fragment/ContactsListFragment.kt | 4 ++-- .../linphone/ui/main/contacts/model/ContactAvatarModel.kt | 3 ++- .../ui/main/contacts/viewmodel/ContactsListViewModel.kt | 5 ++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/adapter/ContactsListAdapter.kt b/app/src/main/java/org/linphone/ui/main/contacts/adapter/ContactsListAdapter.kt index 3399ff6c2..0594f5fd3 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/adapter/ContactsListAdapter.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/adapter/ContactsListAdapter.kt @@ -143,6 +143,7 @@ class ContactsListAdapter( override fun areContentsTheSame(oldItem: ContactAvatarModel, newItem: ContactAvatarModel): Boolean { return oldItem.presenceStatus.value == newItem.presenceStatus.value && + oldItem.isFavourite.value == newItem.isFavourite.value && (newItem.presenceStatus.value == ConsolidatedPresence.Busy || newItem.presenceStatus.value == ConsolidatedPresence.Online) } } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt index 569731df9..a0230b9c0 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt @@ -202,7 +202,7 @@ class ContactsListFragment : AbstractTopBarFragment() { adapter.contactLongClickedEvent.observe(viewLifecycleOwner) { it.consume { model -> val modalBottomSheet = ContactsListMenuDialogFragment( - model.starred, + model.isFavourite.value == true, { // onDismiss adapter.resetSelection() }, @@ -211,7 +211,7 @@ class ContactsListFragment : AbstractTopBarFragment() { model.friend.edit() val starred = !model.friend.starred Log.i( - "$TAG Friend [${model.name.value}] will be ${if (starred) "added" else "removed"} from favourites" + "$TAG Friend [${model.name.value}] will be ${if (starred) "added to" else "removed from"} favourites" ) model.friend.starred = starred model.friend.done() diff --git a/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt index f43846ec7..3ecdb06cc 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt @@ -44,7 +44,7 @@ class ContactAvatarModel @WorkerThread constructor(val friend: Friend) : Abstrac val contactName = friend.name - val starred = friend.starred + val isFavourite = MutableLiveData() val lastPresenceInfo = MutableLiveData() @@ -69,6 +69,7 @@ class ContactAvatarModel @WorkerThread constructor(val friend: Friend) : Abstrac friend.addListener(friendListener) } + isFavourite.postValue(friend.starred) initials.postValue(AppUtils.getInitials(friend.name.orEmpty())) trust.postValue(SecurityLevel.Encrypted) // TODO FIXME: use API showTrust.postValue(coreContext.core.defaultAccount?.isInSecureMode()) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt index e76345967..a8159cacc 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt @@ -78,6 +78,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() @WorkerThread override fun onContactsLoaded() { Log.i("$TAG Contacts have been (re)loaded, updating list") + magicSearch.resetSearchCache() applyFilter( currentFilter, if (limitSearchToLinphoneAccounts) corePreferences.defaultDomain else "", @@ -226,7 +227,9 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() list.add(model) count += 1 - if (friend?.starred == true) { + val starred = friend?.starred ?: false + model.isFavourite.postValue(starred) + if (starred) { favouritesList.add(model) }