diff --git a/app/src/main/java/org/linphone/activities/call/viewmodels/IncomingCallViewModel.kt b/app/src/main/java/org/linphone/activities/call/viewmodels/IncomingCallViewModel.kt index 32d36495a..10ca26403 100644 --- a/app/src/main/java/org/linphone/activities/call/viewmodels/IncomingCallViewModel.kt +++ b/app/src/main/java/org/linphone/activities/call/viewmodels/IncomingCallViewModel.kt @@ -25,6 +25,7 @@ import androidx.lifecycle.ViewModelProvider import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.core.* +import org.linphone.utils.Event class IncomingCallViewModelFactory(private val call: Call) : ViewModelProvider.NewInstanceFactory() { @@ -42,7 +43,22 @@ class IncomingCallViewModel(call: Call) : CallViewModel(call) { val inviteWithVideo = MutableLiveData() + private val listener = object : CoreListenerStub() { + override fun onCallStateChanged( + core: Core, + call: Call, + state: Call.State, + message: String + ) { + if (core.callsNb == 0) { + callEndedEvent.value = Event(true) + } + } + } + init { + coreContext.core.addListener(listener) + screenLocked.value = false inviteWithVideo.value = call.remoteParams?.videoEnabled() earlyMediaVideoEnabled.value = corePreferences.acceptEarlyMedia && @@ -50,6 +66,11 @@ class IncomingCallViewModel(call: Call) : CallViewModel(call) { call.currentParams.videoEnabled() } + override fun onCleared() { + coreContext.core.removeListener(listener) + super.onCleared() + } + fun answer(doAction: Boolean) { if (doAction) coreContext.answerCall(call) }