From 8fb87b18e8f18cd61d8c5514146a9f5a03fb449f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 21 Dec 2023 16:56:42 +0100 Subject: [PATCH] Fixed crash when touching multiple calls top bar if not on active call fragment + fixed top bar alert & status bar color after terminating more than one call --- app/src/main/java/org/linphone/ui/call/CallActivity.kt | 7 +++++-- .../org/linphone/ui/call/fragment/ActiveCallFragment.kt | 2 +- .../java/org/linphone/ui/main/viewmodel/MainViewModel.kt | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/call/CallActivity.kt b/app/src/main/java/org/linphone/ui/call/CallActivity.kt index 9ee8484e3..9292934fb 100644 --- a/app/src/main/java/org/linphone/ui/call/CallActivity.kt +++ b/app/src/main/java/org/linphone/ui/call/CallActivity.kt @@ -252,8 +252,11 @@ class CallActivity : GenericActivity() { callsViewModel.goToCallsListEvent.observe(this) { it.consume { val navController = findNavController(R.id.call_nav_container) - val action = ActiveCallFragmentDirections.actionActiveCallFragmentToCallsListFragment() - navController.navigate(action) + if (navController.currentDestination?.id == R.id.activeCallFragment) { + val action = + ActiveCallFragmentDirections.actionActiveCallFragmentToCallsListFragment() + navController.navigate(action) + } } } diff --git a/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt index 23161bcd1..c22464810 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt @@ -91,7 +91,7 @@ class ActiveCallFragment : GenericCallFragment() { } override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? { - if (findNavController().currentDestination?.id == R.id.newCallFragment) { + if (findNavController().currentDestination?.id == R.id.newCallFragment || findNavController().currentDestination?.id == R.id.callsListFragment) { // Holds fragment in place while new fragment slides over it return AnimationUtils.loadAnimation(activity, R.anim.hold) } diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt index 35eb5c1fd..e42f13dce 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt @@ -122,6 +122,9 @@ class MainViewModel @UiThread constructor() : ViewModel() { ) { updateCallAlert() } else if (core.callsNb == 1) { + if (LinphoneUtils.isCallEnding(call.state)) { + removeAlert(MULTIPLE_CALLS) + } callsStatus.postValue(LinphoneUtils.callStateToString(call.state)) } }