diff --git a/Classes/Swift/Conference/Data/ScheduledConferenceData.swift b/Classes/Swift/Conference/Data/ScheduledConferenceData.swift index 2e351a8c0..5a5c9a89b 100644 --- a/Classes/Swift/Conference/Data/ScheduledConferenceData.swift +++ b/Classes/Swift/Conference/Data/ScheduledConferenceData.swift @@ -40,7 +40,8 @@ class ScheduledConferenceData { let canEdit = MutableLiveData(false) let isFinished : Bool let selectedForDeletion = MutableLiveData(false) - + private var conferenceSchedulerDelegate : ConferenceSchedulerDelegateStub? = nil + private var conferenceScheduler : ConferenceScheduler? = nil init (conferenceInfo: ConferenceInfo, isFinished: Bool = false) { self.conferenceInfo = conferenceInfo @@ -98,11 +99,30 @@ class ScheduledConferenceData { func gotoAssociatedChat() { } + + + func deleteConference() { + conferenceSchedulerDelegate = ConferenceSchedulerDelegateStub( + onStateChanged: { scheduler, state in + Log.i("[Conference Deletion] Conference scheduler state is \(state)") + if (state == .Ready) { + if let chatRoomParams = ConferenceSchedulingViewModel.shared.getConferenceInvitationsChatRoomParams() { + scheduler.sendInvitations(chatRoomParams: chatRoomParams) // Send cancel ICS + Log.e("[Conference Deletion] sent cancel ICS.") + } + } + }) + if (conferenceInfo.state != .Cancelled && canEdit.value == true) { Log.i("[Scheduled Conferences] Cancelling conference \(conferenceInfo.subject)") - ScheduledConferencesViewModel.shared.conferenceScheduler?.cancelConference(conferenceInfo: conferenceInfo) + self.conferenceScheduler = try? Core.get().createConferenceScheduler() + if (self.conferenceScheduler != nil) { + self.conferenceScheduler?.addDelegate(delegate: conferenceSchedulerDelegate!) + self.conferenceScheduler?.cancelConference(conferenceInfo: conferenceInfo) + } + } else { + Core.get().deleteConferenceInformation(conferenceInfo: conferenceInfo) } - Core.get().deleteConferenceInformation(conferenceInfo: conferenceInfo) } } diff --git a/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift b/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift index cd5004231..bb4689e72 100644 --- a/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift +++ b/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift @@ -82,11 +82,7 @@ class ConferenceSchedulingViewModel { if (self.scheduleForLater.value == true && self.sendInviteViaChat.value == true) { // Send conference info even when conf is not scheduled for later // as the conference server doesn't invite participants automatically - if let chatRoomParams = try?self.core.createDefaultChatRoomParams() { - chatRoomParams.encryptionEnabled = self.isEndToEndEncryptedChatAvailable() - chatRoomParams.groupEnabled = false - chatRoomParams.backend = chatRoomParams.encryptionEnabled ? .FlexisipChat : .Basic - chatRoomParams.subject = self.subject.value! + if let chatRoomParams = self.getConferenceInvitationsChatRoomParams() { scheduler.sendInvitations(chatRoomParams: chatRoomParams) } } else { @@ -245,5 +241,16 @@ class ConferenceSchedulingViewModel { return [Duration(value: 30, display: "30min"), Duration(value: 60, display: "1h"), Duration(value: 120, display: "2h")] } + func getConferenceInvitationsChatRoomParams() -> ChatRoomParams? { + if let chatRoomParams = try?self.core.createDefaultChatRoomParams() { + chatRoomParams.encryptionEnabled = self.isEndToEndEncryptedChatAvailable() + chatRoomParams.groupEnabled = false + chatRoomParams.backend = chatRoomParams.encryptionEnabled ? .FlexisipChat : .Basic + chatRoomParams.subject = self.subject.value! + return chatRoomParams + } + return nil + } + }