Fixed navigating to contact without a native ID
This commit is contained in:
parent
9f5951280a
commit
536bfd0020
5 changed files with 32 additions and 19 deletions
|
@ -314,11 +314,16 @@ internal fun DetailChatRoomFragment.navigateToContacts(sipUriToAdd: String) {
|
|||
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||
}
|
||||
|
||||
internal fun DetailChatRoomFragment.navigateToContact(id: String) {
|
||||
internal fun DetailChatRoomFragment.navigateToNativeContact(id: String) {
|
||||
val deepLink = "linphone-android://contact/view/$id"
|
||||
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||
}
|
||||
|
||||
internal fun DetailChatRoomFragment.navigateToFriend(address: String) {
|
||||
val deepLink = "linphone-android://contact/view-friend/$address"
|
||||
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||
}
|
||||
|
||||
internal fun DetailChatRoomFragment.navigateToImdn(args: Bundle?) {
|
||||
if (findNavController().currentDestination?.id == R.id.detailChatRoomFragment) {
|
||||
findNavController().navigate(
|
||||
|
@ -626,11 +631,16 @@ internal fun DetailCallLogFragment.navigateToContacts(sipUriToAdd: String) {
|
|||
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||
}
|
||||
|
||||
internal fun DetailCallLogFragment.navigateToContact(id: String) {
|
||||
internal fun DetailCallLogFragment.navigateToNativeContact(id: String) {
|
||||
val deepLink = "linphone-android://contact/view/$id"
|
||||
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||
}
|
||||
|
||||
internal fun DetailCallLogFragment.navigateToFriend(address: String) {
|
||||
val deepLink = "linphone-android://contact/view-friend/$address"
|
||||
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||
}
|
||||
|
||||
internal fun DetailCallLogFragment.navigateToChatRoom(args: Bundle?) {
|
||||
if (findNavController().currentDestination?.id == R.id.detailCallLogFragment) {
|
||||
findMasterNavController().navigate(
|
||||
|
|
|
@ -1061,15 +1061,15 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
|||
popupWindow.dismiss()
|
||||
val contactId = viewModel.contact.value?.refKey
|
||||
if (contactId != null) {
|
||||
Log.i("[Chat Room] Displaying contact $contactId")
|
||||
navigateToContact(contactId)
|
||||
Log.i("[Chat Room] Displaying native contact [$contactId]")
|
||||
navigateToNativeContact(contactId)
|
||||
} else {
|
||||
val copy = viewModel.getRemoteAddress()?.clone()
|
||||
if (copy != null) {
|
||||
copy.clean()
|
||||
val address = copy.asStringUriOnly()
|
||||
Log.i("[Chat Room] Displaying friend with address $address")
|
||||
navigateToContact(address)
|
||||
Log.i("[Chat Room] Displaying friend with address [$address]")
|
||||
navigateToFriend(address)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -237,8 +237,10 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
val contact = coreContext.contactsManager.findContactById(id)
|
||||
if (contact != null) {
|
||||
contactIdToDisplay = null
|
||||
Log.i("[Contacts] Found matching contact $contact after callback")
|
||||
Log.i("[Contacts] Found matching contact [$contact] after callback")
|
||||
adapter.selectedContactEvent.value = Event(contact)
|
||||
} else {
|
||||
Log.w("[Contacts] No contact found matching id [$id] after callback")
|
||||
}
|
||||
}
|
||||
adapter.submitList(it)
|
||||
|
@ -285,28 +287,30 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
arguments?.clear()
|
||||
|
||||
if (id != null) {
|
||||
Log.i("[Contacts] Found contact id parameter in arguments: $id")
|
||||
Log.i("[Contacts] Found contact id parameter in arguments [$id]")
|
||||
val contact = coreContext.contactsManager.findContactById(id)
|
||||
if (contact != null) {
|
||||
Log.i("[Contacts] Found matching contact $contact")
|
||||
Log.i("[Contacts] Found matching contact [${contact.name}]")
|
||||
adapter.selectedContactEvent.value = Event(contact)
|
||||
} else {
|
||||
Log.w("[Contacts] Matching contact not found yet, waiting for contacts updated callback")
|
||||
contactIdToDisplay = id
|
||||
}
|
||||
} else if (sipUri != null) {
|
||||
Log.i("[Contacts] Found sipUri parameter in arguments: $sipUri")
|
||||
Log.i("[Contacts] Found sipUri parameter in arguments [$sipUri]")
|
||||
sipUriToAdd = sipUri
|
||||
(activity as MainActivity).showSnackBar(R.string.contact_choose_existing_or_new_to_add_number)
|
||||
editOnClick = true
|
||||
} else if (addressString != null) {
|
||||
val address = Factory.instance().createAddress(addressString)
|
||||
if (address != null) {
|
||||
Log.i("[Contacts] Found friend native pointer parameter in arguments: ${address.asStringUriOnly()}")
|
||||
Log.i("[Contacts] Found friend SIP address parameter in arguments [${address.asStringUriOnly()}]")
|
||||
val contact = coreContext.contactsManager.findContactByAddress(address)
|
||||
if (contact != null) {
|
||||
Log.i("[Contacts] Found matching contact $contact")
|
||||
adapter.selectedContactEvent.value = Event(contact)
|
||||
} else {
|
||||
Log.w("[Contacts] No matching contact found for SIP address [${address.asStringUriOnly()}]")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.linphone.R
|
|||
import org.linphone.activities.*
|
||||
import org.linphone.activities.main.*
|
||||
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
||||
import org.linphone.activities.navigateToContact
|
||||
import org.linphone.activities.navigateToContacts
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.HistoryDetailFragmentBinding
|
||||
|
@ -62,7 +61,7 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
|||
val copy = viewModel.callLog.remoteAddress.clone()
|
||||
copy.clean()
|
||||
val address = copy.asStringUriOnly()
|
||||
Log.i("[History] Creating contact with SIP URI: $address")
|
||||
Log.i("[History] Creating contact with SIP URI [$address]")
|
||||
sharedViewModel.updateContactsAnimationsBasedOnDestination.value = Event(R.id.masterCallLogsFragment)
|
||||
navigateToContacts(address)
|
||||
}
|
||||
|
@ -71,14 +70,14 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
|||
sharedViewModel.updateContactsAnimationsBasedOnDestination.value = Event(R.id.masterCallLogsFragment)
|
||||
val contactId = viewModel.contact.value?.refKey
|
||||
if (contactId != null) {
|
||||
Log.i("[History] Displaying contact $contactId")
|
||||
navigateToContact(contactId)
|
||||
Log.i("[History] Displaying native contact [$contactId]")
|
||||
navigateToNativeContact(contactId)
|
||||
} else {
|
||||
val copy = viewModel.callLog.remoteAddress.clone()
|
||||
copy.clean()
|
||||
val address = copy.asStringUriOnly()
|
||||
Log.i("[History] Displaying friend with address $address")
|
||||
navigateToContact(address)
|
||||
Log.i("[History] Displaying friend with address [$address]")
|
||||
navigateToFriend(address)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,7 +90,7 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
|||
address.clean()
|
||||
|
||||
if (coreContext.core.callsNb > 0) {
|
||||
Log.i("[History] Starting dialer with pre-filled URI ${address.asStringUriOnly()}, is transfer? ${sharedViewModel.pendingCallTransfer}")
|
||||
Log.i("[History] Starting dialer with pre-filled URI [${address.asStringUriOnly()}], is transfer? ${sharedViewModel.pendingCallTransfer}")
|
||||
sharedViewModel.updateDialerAnimationsBasedOnDestination.value =
|
||||
Event(R.id.masterCallLogsFragment)
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
|
||||
<ImageView
|
||||
android:onClick="@{contactClickListener}"
|
||||
android:visibility="@{viewModel.contact == null || viewModel.contact.refKey == null ? View.GONE : View.VISIBLE}"
|
||||
android:visibility="@{viewModel.contact == null ? View.GONE : View.VISIBLE}"
|
||||
android:contentDescription="@string/content_description_go_to_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
|
Loading…
Reference in a new issue