Add info toasts to meeting creation/edition

This commit is contained in:
QuentinArguillere 2025-01-14 16:58:11 +01:00
parent a130e83d60
commit 1047a01fd4
3 changed files with 149 additions and 5 deletions

View file

@ -3846,6 +3846,7 @@
}
},
"failed_meeting_ics_invitation_not_sent_toast" : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@ -4545,6 +4546,70 @@
}
}
},
"meeting_failed_to_edit_toast" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Failed to edit meeting"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Échec de la modification de la réunion"
}
}
}
},
"meeting_failed_to_schedule_toast" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Failed to schedule meeting!"
}
},
"fr" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Échec de création de la réunion !"
}
}
}
},
"meeting_failed_to_send_invites_toast" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Failed to send all invites to meeting!"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Échec de l'envoi des invitations à la réunion !"
}
}
}
},
"meeting_failed_to_send_part_of_invites_toast" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Failed to send invites to some participants of the meeting!"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Échec de l'envoi des invitations à certains des participants !"
}
}
}
},
"meeting_info_cancelled_toast" : {
"localizations" : {
"en" : {
@ -4561,6 +4626,22 @@
}
}
},
"meeting_info_created_toast" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Meeting has been created"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Réunion créée"
}
}
}
},
"meeting_info_delete" : {
"localizations" : {
"en" : {
@ -4641,6 +4722,22 @@
}
}
},
"meeting_info_updated_toast" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Meeting has been updated"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Réunion mise à jour"
}
}
}
},
"meeting_schedule_add_participants_title" : {
"localizations" : {
"en" : {

View file

@ -164,6 +164,20 @@ struct ToastView: View {
.default_text_style(styleSize: 15)
.padding(8)
case "Success_meeting_info_created_toast":
Text("meeting_info_created_toast")
.multilineTextAlignment(.center)
.foregroundStyle(Color.greenSuccess500)
.default_text_style(styleSize: 15)
.padding(8)
case "Success_meeting_info_updated_toast":
Text("meeting_info_updated_toast")
.multilineTextAlignment(.center)
.foregroundStyle(Color.greenSuccess500)
.default_text_style(styleSize: 15)
.padding(8)
case "Failed_toast_call_transfer_failed":
Text("call_transfer_failed_toast")
.multilineTextAlignment(.center)
@ -253,8 +267,29 @@ struct ToastView: View {
.default_text_style(styleSize: 15)
.padding(8)
case "Failed_meeting_invitations_not_sent":
Text("failed_meeting_ics_invitation_not_sent_toast")
case "meeting_failed_to_edit_toast":
Text("meeting_failed_to_edit_toast")
.multilineTextAlignment(.center)
.foregroundStyle(Color.redDanger500)
.default_text_style(styleSize: 15)
.padding(8)
case "meeting_failed_to_schedule_toast":
Text("meeting_failed_to_schedule_toast")
.multilineTextAlignment(.center)
.foregroundStyle(Color.redDanger500)
.default_text_style(styleSize: 15)
.padding(8)
case "meeting_failed_to_send_invites_toast":
Text("meeting_failed_to_send_invites_toast")
.multilineTextAlignment(.center)
.foregroundStyle(Color.redDanger500)
.default_text_style(styleSize: 15)
.padding(8)
case "meeting_failed_to_send_part_of_invites_toast":
Text("meeting_failed_to_send_part_of_invites_toast")
.multilineTextAlignment(.center)
.foregroundStyle(Color.redDanger500)
.default_text_style(styleSize: 15)

View file

@ -181,14 +181,23 @@ class MeetingViewModel: ObservableObject {
DispatchQueue.main.async {
self.operationInProgress = false
self.errorMsg = (self.displayedMeeting != nil) ? "Could not edit conference" : "Could not create conference"
// TODO: show error toast
ToastViewModel.shared.toastMessage = (self.displayedMeeting != nil) ? "meeting_failed_to_edit_toast" : "meeting_failed_to_schedule_toast"
ToastViewModel.shared.displayToast = true
}
} else if state == ConferenceScheduler.State.Ready {
let conferenceAddress = self.conferenceScheduler?.info?.uri
if let confInfoToEdit = self.conferenceInfoToEdit {
Log.info("\(MeetingViewModel.TAG) Conference info \(confInfoToEdit.uri?.asStringUriOnly() ?? "'nil'") has been updated")
DispatchQueue.main.async {
ToastViewModel.shared.toastMessage = "Success_meeting_info_updated_toast"
ToastViewModel.shared.displayToast = true
}
} else {
Log.info("\(MeetingViewModel.TAG) Conference info created, address will be \(conferenceAddress?.asStringUriOnly() ?? "'nil'")")
DispatchQueue.main.async {
ToastViewModel.shared.toastMessage = "Success_meeting_info_created_toast"
ToastViewModel.shared.displayToast = true
}
}
if self.sendInvitations {
@ -202,6 +211,9 @@ class MeetingViewModel: ObservableObject {
}
}
} else if state == ConferenceScheduler.State.Updating {
DispatchQueue.main.async {
ToastViewModel.shared.displayToast = true
}
self.sendIcsInvitation(core: core)
}
}, onInvitationsSent: { (_: ConferenceScheduler, failedInvitations: [Address]) in
@ -211,7 +223,7 @@ class MeetingViewModel: ObservableObject {
} else if failedInvitations.count == self.participants.count {
Log.error("\(MeetingViewModel.TAG) No invitation sent!")
DispatchQueue.main.async {
ToastViewModel.shared.toastMessage = "Failed_meeting_invitations_not_sent"
ToastViewModel.shared.toastMessage = "meeting_failed_to_send_invites_toast"
ToastViewModel.shared.displayToast = true
}
} else {
@ -224,7 +236,7 @@ class MeetingViewModel: ObservableObject {
}
Log.warn("\(MeetingViewModel.TAG) \(failedInvitations.count) invitations couldn't have been sent to: \(failInvList)")
DispatchQueue.main.async {
ToastViewModel.shared.toastMessage = "Error: \(failedInvitations.count) invitations couldn't be sent to \(failInvList)"
ToastViewModel.shared.toastMessage = "meeting_failed_to_send_part_of_invites_toast"
ToastViewModel.shared.displayToast = true
}
}