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 {
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)

View file

@ -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]"
)
}