From ce8aee919236a757a1d55587f8031bf5108b288b Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 18 Sep 2023 09:36:00 +0200 Subject: [PATCH] Fixed find contact by phone number --- .../org/linphone/contacts/ContactsManager.kt | 13 +++++++++---- .../ui/main/calls/model/CallLogModel.kt | 2 +- .../calls/viewmodel/StartCallViewModel.kt | 2 +- .../ui/voip/viewmodel/CurrentCallViewModel.kt | 2 +- .../org/linphone/utils/DataBindingUtils.kt | 19 +++++++++++++++---- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index 287249e2f..d045094dc 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -131,10 +131,15 @@ class ContactsManager @UiThread constructor(context: Context) { @WorkerThread fun findContactByAddress(address: Address): Friend? { - val friend = coreContext.core.findFriend(address) - if (friend != null) return friend - - return null + val username = address.username + val usernameIsPhoneNumber = !username.isNullOrEmpty() && username.startsWith("+") + return coreContext.core.findFriend(address) ?: if (usernameIsPhoneNumber) { + coreContext.core.findFriendByPhoneNumber( + username!! + ) + } else { + null + } } @WorkerThread diff --git a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt index 5b3a0a26e..06c8f14aa 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt @@ -42,7 +42,7 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) { } dateTime.postValue(displayedDate) - val friend = coreContext.core.findFriend(address) + val friend = coreContext.contactsManager.findContactByAddress(address) if (friend != null) { friendRefKey = friend.refKey avatarModel = ContactAvatarModel(friend) diff --git a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt index 49536b339..7a6ee2dbc 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt @@ -175,7 +175,7 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { for (result in results) { val address = result.address if (address != null) { - val friend = coreContext.core.findFriend(address) + val friend = coreContext.contactsManager.findContactByAddress(address) if (friend != null) { val model = ContactOrSuggestionModel(address, friend) model.contactAvatarModel = ContactAvatarModel(friend) diff --git a/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt index 72deab15e..5243a0b1c 100644 --- a/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt @@ -382,7 +382,7 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { displayedAddress.postValue(address.asStringUriOnly()) val isDeviceTrusted = updateEncryption() - val friend = call.core.findFriend(address) + val friend = coreContext.contactsManager.findContactByAddress(address) if (friend != null) { displayedName.postValue(friend.name) val model = ContactAvatarModel(friend) diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index bbd92a93a..ec88c55e3 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -207,7 +207,9 @@ fun AppCompatTextView.setColor(@ColorRes color: Int) { @BindingAdapter("avatarInitials") fun AvatarView.loadInitials(initials: String?) { Log.i("[Data Binding Utils] Displaying initials [$initials] on AvatarView") - avatarInitials = initials.orEmpty() + if (initials.orEmpty() != "+") { + avatarInitials = initials.orEmpty() + } } @UiThread @@ -224,7 +226,10 @@ fun AvatarView.loadAccountAvatar(account: AccountModel?) { data = uri, onStart = { // Use initials as placeholder - avatarInitials = account.initials.value.orEmpty() + val initials = account.initials.value.orEmpty() + if (initials != "+") { + avatarInitials = initials + } if (account.showTrust.value == true) { avatarBorderColor = @@ -246,7 +251,10 @@ fun AvatarView.loadAccountAvatar(account: AccountModel?) { data = account.avatar.value, onStart = { // Use initials as placeholder - avatarInitials = account.initials.value.orEmpty() + val initials = account.initials.value.orEmpty() + if (initials != "+") { + avatarInitials = initials + } if (account.showTrust.value == true) { avatarBorderColor = resources.getColor(R.color.blue_trusted, context.theme) @@ -275,7 +283,10 @@ fun AvatarView.loadContactAvatar(contact: ContactAvatarModel?) { data = uri, onStart = { // Use initials as placeholder - avatarInitials = contact.initials + val initials = contact.initials + if (initials != "+") { + avatarInitials = initials + } if (contact.showTrust.value == true) { avatarBorderColor =