From 465e41ae79652507f1f37adeea10b40dfd4500a1 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 8 Mar 2022 11:36:01 +0100 Subject: [PATCH] Fixed navigation issues + ensure friend is freed --- app/src/main/java/org/linphone/activities/Navigation.kt | 8 ++++---- app/src/main/java/org/linphone/contact/ContactsManager.kt | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/Navigation.kt b/app/src/main/java/org/linphone/activities/Navigation.kt index abd0754ce..66c258ec8 100644 --- a/app/src/main/java/org/linphone/activities/Navigation.kt +++ b/app/src/main/java/org/linphone/activities/Navigation.kt @@ -979,7 +979,7 @@ internal fun CallActivity.navigateToOutgoingCall() { findNavController(R.id.nav_host_fragment).navigate( R.id.action_global_outgoingCallFragment, null, - popupTo(R.id.singleCallFragment, true) + popupTo(R.id.outgoingCallFragment, true) ) } @@ -989,7 +989,7 @@ internal fun CallActivity.navigateToIncomingCall(earlyMediaVideoEnabled: Boolean findNavController(R.id.nav_host_fragment).navigate( R.id.action_global_incomingCallFragment, args, - popupTo(R.id.singleCallFragment, true) + popupTo(R.id.incomingCallFragment, true) ) } @@ -997,7 +997,7 @@ internal fun OutgoingCallFragment.navigateToActiveCall() { findNavController().navigate( R.id.action_global_singleCallFragment, null, - popupTo(R.id.outgoingCallFragment, true) + popupTo(R.id.singleCallFragment, true) ) } @@ -1005,7 +1005,7 @@ internal fun IncomingCallFragment.navigateToActiveCall() { findNavController().navigate( R.id.action_global_singleCallFragment, null, - popupTo(R.id.incomingCallFragment, true) + popupTo(R.id.singleCallFragment, true) ) } diff --git a/app/src/main/java/org/linphone/contact/ContactsManager.kt b/app/src/main/java/org/linphone/contact/ContactsManager.kt index ef3c4fba4..a966ce8d3 100644 --- a/app/src/main/java/org/linphone/contact/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contact/ContactsManager.kt @@ -173,6 +173,12 @@ class ContactsManager(private val context: Context) { @Synchronized fun updateContacts(all: ArrayList) { + friendsMap.clear() + // Contact has a Friend field and Friend can have a Contact has userData + // Friend also keeps a ref on the Core, so we have to clean them + for (contact in contacts) { + contact.friend = null + } contacts.clear() contacts.addAll(all)