From 48db3d4aa291cc4e7afee8104268fe4f7187d5dc Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Sat, 9 Sep 2023 17:56:55 +0200 Subject: [PATCH] Fixed sliding pane opening on resume issue --- .../ui/main/calls/fragment/CallsFragment.kt | 16 ++++++++++++++-- .../main/contacts/fragment/ContactsFragment.kt | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsFragment.kt index 55b227e40..ec84a1b94 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsFragment.kt @@ -44,6 +44,10 @@ class CallsFragment : GenericFragment() { private lateinit var binding: CallsFragmentBinding + // Otherwise when going into StartCallFragment and going back, + // CallFragment will resume and ask to open the pane + private var preventSlidingPaneOpening = false + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -64,6 +68,7 @@ class CallsFragment : GenericFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) postponeEnterTransition() + preventSlidingPaneOpening = true binding.lifecycleOwner = viewLifecycleOwner @@ -99,8 +104,14 @@ class CallsFragment : GenericFragment() { viewLifecycleOwner ) { it.consume { - Log.i("$TAG Opening sliding pane") - binding.slidingPaneLayout.openPane() + if (!preventSlidingPaneOpening) { + Log.i("$TAG Opening sliding pane") + binding.slidingPaneLayout.openPane() + } else { + Log.i( + "$TAG We were asked to open the sliding pane but we aren't resumed yet, so not doing it" + ) + } } } @@ -152,6 +163,7 @@ class CallsFragment : GenericFragment() { override fun onResume() { super.onResume() + preventSlidingPaneOpening = false sharedViewModel.currentlyDisplayedFragment.value = R.id.callsFragment } } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt index a9984000a..dd54f8632 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt @@ -44,6 +44,10 @@ class ContactsFragment : GenericFragment() { private lateinit var binding: ContactsFragmentBinding + // Otherwise when going into NewContactFragment and going back, + // ContactFragment will resume and ask to open the pane + private var preventSlidingPaneOpening = false + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -64,6 +68,7 @@ class ContactsFragment : GenericFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) postponeEnterTransition() + preventSlidingPaneOpening = true binding.lifecycleOwner = viewLifecycleOwner @@ -106,8 +111,14 @@ class ContactsFragment : GenericFragment() { viewLifecycleOwner ) { it.consume { - Log.i("$TAG Opening sliding pane") - binding.slidingPaneLayout.openPane() + if (!preventSlidingPaneOpening) { + Log.i("$TAG Opening sliding pane") + binding.slidingPaneLayout.openPane() + } else { + Log.i( + "$TAG We were asked to open the sliding pane but we aren't resumed yet, so not doing it" + ) + } } } @@ -161,6 +172,7 @@ class ContactsFragment : GenericFragment() { override fun onResume() { super.onResume() + preventSlidingPaneOpening = false sharedViewModel.currentlyDisplayedFragment.value = R.id.contactsFragment } }