diff --git a/app/src/main/java/org/linphone/activities/voip/data/CallData.kt b/app/src/main/java/org/linphone/activities/voip/data/CallData.kt index 857d86c86..4c2fe15db 100644 --- a/app/src/main/java/org/linphone/activities/voip/data/CallData.kt +++ b/app/src/main/java/org/linphone/activities/voip/data/CallData.kt @@ -176,7 +176,7 @@ open class CallData(val call: Call) : GenericContactData(call.remoteAddress) { } fun isActiveAndNotInConference(): Boolean { - return isPaused.value == false && isRemotelyPaused.value == false && isInRemoteConference.value == false + return isPaused.value == false && isRemotelyPaused.value == false && call.conference?.call != null && isInRemoteConference.value == false } private fun isCallPaused(): Boolean { @@ -238,7 +238,7 @@ open class CallData(val call: Call) : GenericContactData(call.remoteAddress) { private fun updateConferenceInfo() { val conference = call.conference - isInRemoteConference.value = conference != null + isInRemoteConference.value = conference != null && conference.call != null if (conference != null) { Log.d("[Call] Found conference attached to call") remoteConferenceSubject.value = LinphoneUtils.getConferenceSubject(conference) 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 2d9e2e403..3153ed771 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 @@ -377,7 +377,7 @@ class ConferenceViewModel : ViewModel() { moreThanTwoParticipantsJoinedEvent.value = Event(true) } - isConferenceLocallyPaused.value = !conference.isIn + isConferenceLocallyPaused.value = if (conference.call == null) false else !conference.isIn isMeAdmin.value = conference.me.isAdmin isVideoConference.value = conference.currentParams.isVideoEnabled && !corePreferences.disableVideo subject.value = LinphoneUtils.getConferenceSubject(conference) @@ -459,18 +459,21 @@ class ConferenceViewModel : ViewModel() { private fun updateConferenceLayout(conference: Conference) { val call = conference.call - if (call == null) { - Log.e("[Conference] Call is null!") - return - } + var videoDirection = MediaDirection.Inactive - val params = call.params - conferenceDisplayMode.value = if (!params.isVideoEnabled) { - ConferenceDisplayMode.AUDIO_ONLY + if (call == null) { + conferenceDisplayMode.value = ConferenceDisplayMode.AUDIO_ONLY + Log.w("[Conference] Call is null, assuming audio only layout for local conference") } else { - when (params.conferenceVideoLayout) { - Conference.Layout.Grid -> ConferenceDisplayMode.GRID - else -> ConferenceDisplayMode.ACTIVE_SPEAKER + val params = call.params + videoDirection = params.videoDirection + conferenceDisplayMode.value = if (!params.isVideoEnabled) { + ConferenceDisplayMode.AUDIO_ONLY + } else { + when (params.conferenceVideoLayout) { + Conference.Layout.Grid -> ConferenceDisplayMode.GRID + else -> ConferenceDisplayMode.ACTIVE_SPEAKER + } } } @@ -478,7 +481,7 @@ class ConferenceViewModel : ViewModel() { conferenceParticipantDevices.value = list Log.i( - "[Conference] Current layout is [${conferenceDisplayMode.value}], video direction is [${params.videoDirection}]" + "[Conference] Current layout is [${conferenceDisplayMode.value}], video direction is [$videoDirection]" ) }