Fixed group call outgoing process (hiding outgoing call fragment)
This commit is contained in:
parent
6f11fbc586
commit
435e4b84f6
3 changed files with 34 additions and 8 deletions
|
@ -95,8 +95,7 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
||||||
chatRoomParams.subject = subject.value
|
chatRoomParams.subject = subject.value
|
||||||
conferenceScheduler.sendInvitations(chatRoomParams)
|
conferenceScheduler.sendInvitations(chatRoomParams)
|
||||||
} else {
|
} else {
|
||||||
conferenceCreationInProgress.value = false
|
// Will be done in coreListener
|
||||||
conferenceCreationCompletedEvent.value = Event(true)
|
|
||||||
}
|
}
|
||||||
} else if (state == ConferenceSchedulerState.Error) {
|
} else if (state == ConferenceSchedulerState.Error) {
|
||||||
Log.e("[Conference Creation] Failed to create conference!")
|
Log.e("[Conference Creation] Failed to create conference!")
|
||||||
|
@ -128,6 +127,30 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val coreListener: CoreListenerStub = object : CoreListenerStub() {
|
||||||
|
override fun onCallStateChanged(
|
||||||
|
core: Core,
|
||||||
|
call: Call,
|
||||||
|
state: Call.State?,
|
||||||
|
message: String
|
||||||
|
) {
|
||||||
|
when (state) {
|
||||||
|
Call.State.OutgoingProgress -> {
|
||||||
|
conferenceCreationInProgress.value = false
|
||||||
|
}
|
||||||
|
Call.State.End -> {
|
||||||
|
Log.i("[Conference Creation] Call has ended, leaving waiting room fragment")
|
||||||
|
conferenceCreationCompletedEvent.value = Event(true)
|
||||||
|
}
|
||||||
|
Call.State.Error -> {
|
||||||
|
Log.w("[Conference Creation] Call has failed, leaving waiting room fragment")
|
||||||
|
conferenceCreationCompletedEvent.value = Event(true)
|
||||||
|
}
|
||||||
|
else -> {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
sipContactsSelected.value = true
|
sipContactsSelected.value = true
|
||||||
|
|
||||||
|
@ -159,9 +182,11 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
conferenceScheduler.addListener(listener)
|
conferenceScheduler.addListener(listener)
|
||||||
|
coreContext.core.addListener(coreListener)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCleared() {
|
override fun onCleared() {
|
||||||
|
coreContext.core.removeListener(coreListener)
|
||||||
conferenceScheduler.removeListener(listener)
|
conferenceScheduler.removeListener(listener)
|
||||||
participantsData.value.orEmpty().forEach(ConferenceSchedulingParticipantData::destroy)
|
participantsData.value.orEmpty().forEach(ConferenceSchedulingParticipantData::destroy)
|
||||||
|
|
||||||
|
|
|
@ -90,11 +90,12 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
|
||||||
message: String
|
message: String
|
||||||
) {
|
) {
|
||||||
when (state) {
|
when (state) {
|
||||||
Call.State.Connected -> {
|
Call.State.End -> {
|
||||||
Log.i("[Conference Waiting Room] Call is now connected")
|
Log.i("[Conference Waiting Room] Call has ended, leaving waiting room fragment")
|
||||||
|
leaveWaitingRoomEvent.value = Event(true)
|
||||||
}
|
}
|
||||||
Call.State.End, Call.State.Error -> {
|
Call.State.Error -> {
|
||||||
Log.w("[Conference Waiting Room] Call has failed or ended, leaving waiting room fragment")
|
Log.w("[Conference Waiting Room] Call has failed, leaving waiting room fragment")
|
||||||
leaveWaitingRoomEvent.value = Event(true)
|
leaveWaitingRoomEvent.value = Event(true)
|
||||||
}
|
}
|
||||||
else -> {}
|
else -> {}
|
||||||
|
|
|
@ -182,13 +182,13 @@ class CoreContext(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (state == Call.State.OutgoingInit) {
|
} else if (state == Call.State.OutgoingProgress) {
|
||||||
val conferenceInfo = core.findConferenceInformationFromUri(call.remoteAddress)
|
val conferenceInfo = core.findConferenceInformationFromUri(call.remoteAddress)
|
||||||
// Do not show outgoing call view for conference calls, wait for connected state
|
// Do not show outgoing call view for conference calls, wait for connected state
|
||||||
if (conferenceInfo == null) {
|
if (conferenceInfo == null) {
|
||||||
onOutgoingStarted()
|
onOutgoingStarted()
|
||||||
}
|
}
|
||||||
} else if (state == Call.State.OutgoingProgress) {
|
|
||||||
if (core.callsNb == 1 && corePreferences.routeAudioToBluetoothIfAvailable) {
|
if (core.callsNb == 1 && corePreferences.routeAudioToBluetoothIfAvailable) {
|
||||||
AudioRouteUtils.routeAudioToBluetooth(call)
|
AudioRouteUtils.routeAudioToBluetooth(call)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue