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
|
||||
conferenceScheduler.sendInvitations(chatRoomParams)
|
||||
} else {
|
||||
conferenceCreationInProgress.value = false
|
||||
conferenceCreationCompletedEvent.value = Event(true)
|
||||
// Will be done in coreListener
|
||||
}
|
||||
} else if (state == ConferenceSchedulerState.Error) {
|
||||
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 {
|
||||
sipContactsSelected.value = true
|
||||
|
||||
|
@ -159,9 +182,11 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
|||
}
|
||||
|
||||
conferenceScheduler.addListener(listener)
|
||||
coreContext.core.addListener(coreListener)
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
coreContext.core.removeListener(coreListener)
|
||||
conferenceScheduler.removeListener(listener)
|
||||
participantsData.value.orEmpty().forEach(ConferenceSchedulingParticipantData::destroy)
|
||||
|
||||
|
|
|
@ -90,11 +90,12 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
|
|||
message: String
|
||||
) {
|
||||
when (state) {
|
||||
Call.State.Connected -> {
|
||||
Log.i("[Conference Waiting Room] Call is now connected")
|
||||
Call.State.End -> {
|
||||
Log.i("[Conference Waiting Room] Call has ended, leaving waiting room fragment")
|
||||
leaveWaitingRoomEvent.value = Event(true)
|
||||
}
|
||||
Call.State.End, Call.State.Error -> {
|
||||
Log.w("[Conference Waiting Room] Call has failed or ended, leaving waiting room fragment")
|
||||
Call.State.Error -> {
|
||||
Log.w("[Conference Waiting Room] Call has failed, leaving waiting room fragment")
|
||||
leaveWaitingRoomEvent.value = Event(true)
|
||||
}
|
||||
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)
|
||||
// Do not show outgoing call view for conference calls, wait for connected state
|
||||
if (conferenceInfo == null) {
|
||||
onOutgoingStarted()
|
||||
}
|
||||
} else if (state == Call.State.OutgoingProgress) {
|
||||
|
||||
if (core.callsNb == 1 && corePreferences.routeAudioToBluetoothIfAvailable) {
|
||||
AudioRouteUtils.routeAudioToBluetooth(call)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue