diff --git a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt index 09983aa04..deda3e9d7 100644 --- a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt +++ b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt @@ -102,6 +102,7 @@ class ControlsFragment : GenericFragment() { viewLifecycleOwner ) { it.consume { + Log.i("[Controls Fragment] No more call, finishing activity") requireActivity().finish() } } diff --git a/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt b/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt index e6165e651..103bd0422 100644 --- a/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt @@ -49,6 +49,11 @@ class CallsViewModel : ViewModel() { } private val listener = object : CoreListenerStub() { + override fun onLastCallEnded(core: Core) { + Log.i("[Calls VM] Last call ended") + noMoreCallEvent.value = Event(true) + } + override fun onCallStateChanged(core: Core, call: Call, state: Call.State, message: String) { Log.i("[Calls VM] Call state changed: $state") callPausedByRemote.value = (state == Call.State.PausedByRemote) and (call.conference == null) @@ -63,9 +68,9 @@ class CallsViewModel : ViewModel() { } if (state == Call.State.End || state == Call.State.Released || state == Call.State.Error) { - if (core.callsNb == 0) { - noMoreCallEvent.value = Event(true) - } else { + val callsNb = core.callsNb + Log.i("[Calls VM] Calls NB = $callsNb") + if (callsNb > 0) { removeCallFromPausedListIfPresent(call) } } else if (state == Call.State.Paused) { diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index d098d076d..dafd78c73 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -128,6 +128,11 @@ class CoreContext(val context: Context, coreConfig: Config) { } } + override fun onLastCallEnded(core: Core) { + Log.i("[Context] Last call ended") + removeCallOverlay() + } + override fun onCallStateChanged( core: Core, call: Call, @@ -200,10 +205,6 @@ class CoreContext(val context: Context, coreConfig: Config) { } } } else if (state == Call.State.End || state == Call.State.Error || state == Call.State.Released) { - if (core.callsNb == 0) { - removeCallOverlay() - } - if (state == Call.State.Error) { Log.w("[Context] Call error reason is ${call.errorInfo.protocolCode} / ${call.errorInfo.reason} / ${call.errorInfo.phrase}") val message = when (call.errorInfo.reason) {