From af75f4c3a30c30e372c58bc7450e179605b7e01b Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 8 Aug 2023 17:54:23 +0200 Subject: [PATCH] Fixed drawer opened to latest seen contact when navigating back --- .../java/org/linphone/ui/calls/fragment/CallsFragment.kt | 7 +++++++ .../org/linphone/ui/contacts/fragment/ContactFragment.kt | 2 ++ .../org/linphone/ui/contacts/fragment/ContactsFragment.kt | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/app/src/main/java/org/linphone/ui/calls/fragment/CallsFragment.kt b/app/src/main/java/org/linphone/ui/calls/fragment/CallsFragment.kt index 009c3ebad..c8f4891ee 100644 --- a/app/src/main/java/org/linphone/ui/calls/fragment/CallsFragment.kt +++ b/app/src/main/java/org/linphone/ui/calls/fragment/CallsFragment.kt @@ -24,6 +24,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.view.doOnPreDraw +import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import androidx.slidingpanelayout.widget.SlidingPaneLayout import org.linphone.R @@ -79,6 +80,9 @@ class CallsFragment : GenericFragment() { sharedViewModel.navigateToConversationsEvent.observe(viewLifecycleOwner) { it.consume { if (findNavController().currentDestination?.id == R.id.callsFragment) { + // To prevent any previously seen contact to show up when navigating back to here later + binding.callsRightNavContainer.findNavController().popBackStack() + val action = CallsFragmentDirections.actionCallsFragmentToConversationsFragment() findNavController().navigate(action) @@ -89,6 +93,9 @@ class CallsFragment : GenericFragment() { sharedViewModel.navigateToContactsEvent.observe(viewLifecycleOwner) { it.consume { if (findNavController().currentDestination?.id == R.id.callsFragment) { + // To prevent any previously seen contact to show up when navigating back to here later + binding.callsRightNavContainer.findNavController().popBackStack() + val action = CallsFragmentDirections.actionCallsFragmentToContactsFragment() findNavController().navigate(action) } diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactFragment.kt b/app/src/main/java/org/linphone/ui/contacts/fragment/ContactFragment.kt index 0c4f27df0..70fd7558e 100644 --- a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/contacts/fragment/ContactFragment.kt @@ -27,6 +27,7 @@ import androidx.core.view.doOnPreDraw import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.navArgs import androidx.transition.ChangeBounds +import org.linphone.core.tools.Log import org.linphone.databinding.ContactFragmentBinding import org.linphone.ui.contacts.viewmodel.ContactViewModel import org.linphone.ui.fragment.GenericFragment @@ -64,6 +65,7 @@ class ContactFragment : GenericFragment() { binding.viewModel = viewModel val refKey = args.contactRefKey + Log.i("[Contact Fragment] Looking up for contact with ref key [$refKey]") viewModel.findContactByRefKey(refKey) binding.setBackClickListener { diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsFragment.kt b/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsFragment.kt index f1c48883d..55b273cad 100644 --- a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsFragment.kt +++ b/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsFragment.kt @@ -28,6 +28,7 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import androidx.slidingpanelayout.widget.SlidingPaneLayout import org.linphone.R +import org.linphone.core.tools.Log import org.linphone.databinding.ContactsFragmentBinding import org.linphone.ui.fragment.GenericFragment import org.linphone.utils.SlidingPaneBackPressedCallback @@ -81,6 +82,7 @@ class ContactsFragment : GenericFragment() { viewLifecycleOwner ) { it.consume { refKey -> + Log.i("[Contacts Fragment] Displaying contact with ref key [$refKey]") val navController = binding.contactsRightNavContainer.findNavController() val action = ContactFragmentDirections.actionGlobalContactFragment( refKey @@ -92,6 +94,9 @@ class ContactsFragment : GenericFragment() { sharedViewModel.navigateToConversationsEvent.observe(viewLifecycleOwner) { it.consume { if (findNavController().currentDestination?.id == R.id.contactsFragment) { + // To prevent any previously seen contact to show up when navigating back to here later + binding.contactsRightNavContainer.findNavController().popBackStack() + val action = ContactsFragmentDirections.actionContactsFragmentToConversationsFragment() findNavController().navigate(action) } @@ -101,6 +106,9 @@ class ContactsFragment : GenericFragment() { sharedViewModel.navigateToCallsEvent.observe(viewLifecycleOwner) { it.consume { if (findNavController().currentDestination?.id == R.id.contactsFragment) { + // To prevent any previously seen contact to show up when navigating back to here later + binding.contactsRightNavContainer.findNavController().popBackStack() + val action = ContactsFragmentDirections.actionContactsFragmentToCallsFragment() findNavController().navigate(action) }