Update and cancel meeting : now properly send ICS through chat

This commit is contained in:
QuentinArguillere 2024-08-27 16:08:23 +02:00
parent 8059dd4470
commit 22d37cfce9
4 changed files with 30 additions and 23 deletions

View file

@ -1085,9 +1085,8 @@ struct ContentView: View {
actionSecondButton: {
meetingViewModel.displayedMeeting = nil
if let meetingToDelete = self.meetingsListViewModel.selectedMeetingToDelete {
self.meetingViewModel.cancelMeetingWithNotifications(meeting: meetingToDelete)
meetingsListViewModel.deleteSelectedMeeting()
// We're in the meeting list view
self.meetingViewModel.sendMeetingCancelledNotifications(meeting: meetingToDelete)
self.isShowSendCancelMeetingNotificationPopup.toggle()
}
})

View file

@ -401,6 +401,8 @@ struct ScheduleMeetingFragment: View {
.onAppear {
proxyReader.scrollTo(meetingViewModel.selectedTimezoneIdx)
}
.background(.white)
.cornerRadius(20)
.listStyle(.plain)
}
.frame(width: geometry.size.width, height: geometry.size.height)

View file

@ -161,6 +161,18 @@ class MeetingViewModel: ObservableObject {
confInfo.participantInfos = participantsInfoList
}
private func sendIcsInvitation(core: Core) {
if let chatRoomParams = try? core.createDefaultChatRoomParams() {
chatRoomParams.groupEnabled = false
chatRoomParams.backend = ChatRoom.Backend.FlexisipChat
chatRoomParams.encryptionEnabled = true
chatRoomParams.subject = "Meeting ics"
self.conferenceScheduler?.sendInvitations(chatRoomParams: chatRoomParams)
} else {
Log.error("\(MeetingViewModel.TAG) Failed to create default chatroom parameters. This should not happen")
}
}
private func resetConferenceSchedulerAndListeners(core: Core) {
self.mSchedulerSubscriptions.removeAll()
self.conferenceScheduler = try? core.createConferenceScheduler()
@ -185,15 +197,7 @@ class MeetingViewModel: ObservableObject {
if self.sendInvitations {
Log.info("\(MeetingViewModel.TAG) User asked for invitations to be sent, let's do it")
if let chatRoomParams = try? core.createDefaultChatRoomParams() {
chatRoomParams.groupEnabled = false
chatRoomParams.backend = ChatRoom.Backend.FlexisipChat
chatRoomParams.encryptionEnabled = true
chatRoomParams.subject = "Meeting invitation" // Won't be used
self.conferenceScheduler?.sendInvitations(chatRoomParams: chatRoomParams)
} else {
Log.error("\(MeetingViewModel.TAG) Failed to create default chatroom parameters. This should not happen")
}
self.sendIcsInvitation(core: core)
} else {
Log.info("\(MeetingViewModel.TAG) User didn't asked for invitations to be sent")
DispatchQueue.main.async {
@ -201,6 +205,8 @@ class MeetingViewModel: ObservableObject {
self.conferenceCreatedEvent = true
}
}
} else if cbVal.state == ConferenceScheduler.State.Updating {
self.sendIcsInvitation(core: core)
}
})
@ -318,9 +324,10 @@ class MeetingViewModel: ObservableObject {
self.displayedMeeting = meeting
}
func sendMeetingCancelledNotifications(meeting: MeetingModel) {
func cancelMeetingWithNotifications(meeting: MeetingModel) {
CoreContext.shared.doOnCoreQueue { core in
self.conferenceScheduler = try? core.createConferenceScheduler()
Log.info("debugtrace - core media encryption = \(core.mediaEncryption)")
self.resetConferenceSchedulerAndListeners(core: core)
self.conferenceScheduler?.cancelConference(conferenceInfo: meeting.confInfo)
}
}

View file

@ -122,17 +122,16 @@ class MeetingsListViewModel: ObservableObject {
coreContext.doOnCoreQueue { core in
core.deleteConferenceInformation(conferenceInfo: meetingToDelete.confInfo)
DispatchQueue.main.async {
if let index = self.meetingsList.firstIndex(where: { $0.model?.address == meetingToDelete.address }) {
if self.todayIdx > index {
// bump todayIdx one place up
self.todayIdx -= 1
}
self.meetingsList.remove(at: index)
ToastViewModel.shared.toastMessage = "Success_toast_meeting_deleted"
ToastViewModel.shared.displayToast = true
}
}
if let index = self.meetingsList.firstIndex(where: { $0.model?.address == meetingToDelete.address }) {
if self.todayIdx > index {
// bump todayIdx one place up
self.todayIdx -= 1
}
self.meetingsList.remove(at: index)
ToastViewModel.shared.toastMessage = "Success_toast_meeting_deleted"
ToastViewModel.shared.displayToast = true
}
}
}