diff --git a/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt b/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt index e69e25b8b..b6c5cb02f 100644 --- a/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt +++ b/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt @@ -239,6 +239,13 @@ class ConferenceViewModel : ViewModel() { waitForNextStreamsRunningToUpdateLayout = false reloadConferenceFragmentEvent.value = Event(true) } + if (state == Call.State.StreamsRunning && call.conference?.isIn == true) { + isConferenceLocallyPaused.value = false + conferenceParticipantDevices.value?.forEach { + if (it.isMe) + it.isInConference.value = true + } + } } } diff --git a/app/src/main/java/org/linphone/telecom/NativeCallWrapper.kt b/app/src/main/java/org/linphone/telecom/NativeCallWrapper.kt index c2de142a1..fd6b5b70a 100644 --- a/app/src/main/java/org/linphone/telecom/NativeCallWrapper.kt +++ b/app/src/main/java/org/linphone/telecom/NativeCallWrapper.kt @@ -61,13 +61,23 @@ class NativeCallWrapper(var callId: String) : Connection() { override fun onHold() { Log.i("[Connection] Pausing telecom call with id: $callId") - getCall()?.pause() ?: selfDestroy() + getCall()?.let { call -> + if (call.conference != null) + call.conference?.leave() + else + call.pause() + } ?: selfDestroy() setOnHold() } override fun onUnhold() { Log.i("[Connection] Resuming telecom call with id: $callId") - getCall()?.resume() ?: selfDestroy() + getCall()?.let { call -> + if (call.conference != null) + call.conference?.enter() + else + call.resume() + } ?: selfDestroy() setActive() }