Fixed merging calls into local conference

This commit is contained in:
Sylvain Berfini 2024-01-15 13:03:05 +01:00
parent de2ee00957
commit 4da3c2f6fc
2 changed files with 17 additions and 14 deletions

View file

@ -176,7 +176,7 @@ open class CallData(val call: Call) : GenericContactData(call.remoteAddress) {
} }
fun isActiveAndNotInConference(): Boolean { 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 { private fun isCallPaused(): Boolean {
@ -238,7 +238,7 @@ open class CallData(val call: Call) : GenericContactData(call.remoteAddress) {
private fun updateConferenceInfo() { private fun updateConferenceInfo() {
val conference = call.conference val conference = call.conference
isInRemoteConference.value = conference != null isInRemoteConference.value = conference != null && conference.call != null
if (conference != null) { if (conference != null) {
Log.d("[Call] Found conference attached to call") Log.d("[Call] Found conference attached to call")
remoteConferenceSubject.value = LinphoneUtils.getConferenceSubject(conference) remoteConferenceSubject.value = LinphoneUtils.getConferenceSubject(conference)

View file

@ -377,7 +377,7 @@ class ConferenceViewModel : ViewModel() {
moreThanTwoParticipantsJoinedEvent.value = Event(true) moreThanTwoParticipantsJoinedEvent.value = Event(true)
} }
isConferenceLocallyPaused.value = !conference.isIn isConferenceLocallyPaused.value = if (conference.call == null) false else !conference.isIn
isMeAdmin.value = conference.me.isAdmin isMeAdmin.value = conference.me.isAdmin
isVideoConference.value = conference.currentParams.isVideoEnabled && !corePreferences.disableVideo isVideoConference.value = conference.currentParams.isVideoEnabled && !corePreferences.disableVideo
subject.value = LinphoneUtils.getConferenceSubject(conference) subject.value = LinphoneUtils.getConferenceSubject(conference)
@ -459,18 +459,21 @@ class ConferenceViewModel : ViewModel() {
private fun updateConferenceLayout(conference: Conference) { private fun updateConferenceLayout(conference: Conference) {
val call = conference.call val call = conference.call
if (call == null) { var videoDirection = MediaDirection.Inactive
Log.e("[Conference] Call is null!")
return
}
val params = call.params if (call == null) {
conferenceDisplayMode.value = if (!params.isVideoEnabled) { conferenceDisplayMode.value = ConferenceDisplayMode.AUDIO_ONLY
ConferenceDisplayMode.AUDIO_ONLY Log.w("[Conference] Call is null, assuming audio only layout for local conference")
} else { } else {
when (params.conferenceVideoLayout) { val params = call.params
Conference.Layout.Grid -> ConferenceDisplayMode.GRID videoDirection = params.videoDirection
else -> ConferenceDisplayMode.ACTIVE_SPEAKER 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 conferenceParticipantDevices.value = list
Log.i( Log.i(
"[Conference] Current layout is [${conferenceDisplayMode.value}], video direction is [${params.videoDirection}]" "[Conference] Current layout is [${conferenceDisplayMode.value}], video direction is [$videoDirection]"
) )
} }