diff --git a/Linphone/UI/Main/ContentView.swift b/Linphone/UI/Main/ContentView.swift index 147db9421..d4858dc7e 100644 --- a/Linphone/UI/Main/ContentView.swift +++ b/Linphone/UI/Main/ContentView.swift @@ -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() } }) diff --git a/Linphone/UI/Main/Meetings/Fragments/ScheduleMeetingFragment.swift b/Linphone/UI/Main/Meetings/Fragments/ScheduleMeetingFragment.swift index 23c78ca96..4b9bf8e31 100644 --- a/Linphone/UI/Main/Meetings/Fragments/ScheduleMeetingFragment.swift +++ b/Linphone/UI/Main/Meetings/Fragments/ScheduleMeetingFragment.swift @@ -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) diff --git a/Linphone/UI/Main/Meetings/ViewModel/MeetingViewModel.swift b/Linphone/UI/Main/Meetings/ViewModel/MeetingViewModel.swift index ad6390925..e5d31b496 100644 --- a/Linphone/UI/Main/Meetings/ViewModel/MeetingViewModel.swift +++ b/Linphone/UI/Main/Meetings/ViewModel/MeetingViewModel.swift @@ -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) } } diff --git a/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift b/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift index 06eb9fa46..e08fdd3c7 100644 --- a/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift +++ b/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift @@ -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 } } }