diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 6b8b1b064..ed04ca06d 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -501,21 +501,16 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C call.acceptWithParams(params) } - @WorkerThread - fun declineCall(call: Call) { - val reason = if (core.callsNb > 1) { - Reason.Busy - } else { - Reason.Declined - } - Log.i("$TAG Declining call [$call] with reason [$reason]") - call.decline(reason) - } - @WorkerThread fun terminateCall(call: Call) { - Log.i("$TAG Terminating call [${call.remoteAddress.asStringUriOnly()}]") - call.terminate() + if (call.dir == Call.Dir.Incoming && LinphoneUtils.isCallIncoming(call.state)) { + val reason = if (call.core.callsNb > 1) Reason.Busy else Reason.Declined + Log.i("$TAG Declining call [${call.remoteAddress.asStringUriOnly()}] with reason [$reason]") + call.decline(reason) + } else { + Log.i("$TAG Terminating call [${call.remoteAddress.asStringUriOnly()}]") + call.terminate() + } } @UiThread diff --git a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt index c353ecb88..36683fcfb 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt @@ -63,11 +63,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { if (intent.action == NotificationsManager.INTENT_ANSWER_CALL_NOTIF_ACTION) { coreContext.answerCall(call) } else { - if (LinphoneUtils.isCallIncoming(call.state)) { - coreContext.declineCall(call) - } else { - coreContext.terminateCall(call) - } + coreContext.terminateCall(call) } } } diff --git a/app/src/main/java/org/linphone/telecom/TelecomManager.kt b/app/src/main/java/org/linphone/telecom/TelecomManager.kt index 554d1377e..2663b3be4 100644 --- a/app/src/main/java/org/linphone/telecom/TelecomManager.kt +++ b/app/src/main/java/org/linphone/telecom/TelecomManager.kt @@ -21,6 +21,7 @@ package org.linphone.telecom import android.content.Context import android.net.Uri +import android.telecom.DisconnectCause import androidx.annotation.WorkerThread import androidx.core.telecom.CallAttributesCompat import androidx.core.telecom.CallsManager @@ -33,6 +34,7 @@ import org.linphone.core.AudioDevice import org.linphone.core.Call import org.linphone.core.Core import org.linphone.core.CoreListenerStub +import org.linphone.core.Reason import org.linphone.core.tools.Log import org.linphone.utils.LinphoneUtils @@ -110,10 +112,7 @@ class TelecomManager @WorkerThread constructor(context: Context) { "$TAG We're asked to terminate the call with reason [$disconnectCause]" ) coreContext.postOnCoreThread { - Log.i( - "$TAG Terminating call [${call.remoteAddress.asStringUriOnly()}]" - ) - call.terminate() // TODO FIXME: use cause + coreContext.terminateCall(call) } }, { // onSetActive diff --git a/app/src/main/java/org/linphone/ui/call/model/CallModel.kt b/app/src/main/java/org/linphone/ui/call/model/CallModel.kt index fe4154d0a..b669afda7 100644 --- a/app/src/main/java/org/linphone/ui/call/model/CallModel.kt +++ b/app/src/main/java/org/linphone/ui/call/model/CallModel.kt @@ -97,7 +97,7 @@ class CallModel @WorkerThread constructor(val call: Call) { fun hangUp() { coreContext.postOnCoreThread { Log.i("$TAG Terminating call [${call.remoteAddress.asStringUriOnly()}]") - call.terminate() + coreContext.terminateCall(call) } } } diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index d5c975ec8..361ab2afe 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -451,7 +451,7 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { if (::currentCall.isInitialized) { Log.i("$TAG Terminating call [${currentCall.remoteAddress.asStringUriOnly()}]") terminatedByUsed = true - currentCall.terminate() + coreContext.terminateCall(currentCall) } } }