diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt index e5dffd716..c4b7b163c 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt @@ -120,7 +120,11 @@ class StartCallFragment : GenericAddressPickerFragment() { viewModel.leaveFragmentEvent.observe(viewLifecycleOwner) { it.consume { - goBack() + // Post on main thread to allow for main activity to be resumed + coreContext.postOnMainThread { + Log.i("$TAG Going back") + goBack() + } } } diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt index 4cce533a7..b19f385ea 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt @@ -84,8 +84,14 @@ class StartCallViewModel @WorkerThread override fun onStateChanged(conference: Conference, newState: Conference.State?) { Log.i("$TAG Conference state changed [$newState]") - if (newState == Conference.State.Created || newState == Conference.State.CreationFailed) { - operationInProgress.postValue(false) + when (newState) { + Conference.State.Created, Conference.State.CreationFailed, Conference.State.TerminationPending -> { + operationInProgress.postValue(false) + } + Conference.State.Terminated -> { + leaveFragmentEvent.postValue(Event(true)) + } + else -> {} } } }