[evolution-ews] Bug 786095 - Replies to meeting requests with RSVP=false
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] Bug 786095 - Replies to meeting requests with RSVP=false
- Date: Wed, 23 Aug 2017 10:13:38 +0000 (UTC)
commit 296aa56a1828e210928cd11628a7d494e83d2121
Author: Milan Crha <mcrha redhat com>
Date: Wed Aug 23 12:13:55 2017 +0200
Bug 786095 - Replies to meeting requests with RSVP=false
src/calendar/e-cal-backend-ews.c | 40 ++++++++++++++++++++++++++++++++-----
1 files changed, 34 insertions(+), 6 deletions(-)
---
diff --git a/src/calendar/e-cal-backend-ews.c b/src/calendar/e-cal-backend-ews.c
index c1fccfb..c0fbec7 100644
--- a/src/calendar/e-cal-backend-ews.c
+++ b/src/calendar/e-cal-backend-ews.c
@@ -3014,10 +3014,30 @@ find_attendee_if_sentby (icalcomponent *ical_comp,
return prop;
}
+static void
+ecb_ews_get_rsvp (icalproperty *attendee,
+ gboolean *out_rsvp_requested)
+{
+ if (out_rsvp_requested)
+ *out_rsvp_requested = FALSE;
+ else
+ return;
+
+ if (attendee) {
+ icalparameter *rsvp;
+
+ rsvp = icalproperty_get_first_parameter (attendee, ICAL_RSVP_PARAMETER);
+ if (rsvp) {
+ *out_rsvp_requested = icalparameter_get_rsvp (rsvp) == ICAL_RSVP_TRUE;
+ }
+ }
+}
+
static const gchar *
ecb_ews_get_current_user_meeting_reponse (ECalBackendEws *cbews,
icalcomponent *icalcomp,
- const gchar *current_user_mail)
+ const gchar *current_user_mail,
+ gboolean *out_rsvp_requested)
{
icalproperty *attendee;
const gchar *attendee_str = NULL, *attendee_mail = NULL;
@@ -3025,6 +3045,9 @@ ecb_ews_get_current_user_meeting_reponse (ECalBackendEws *cbews,
const gchar *response = NULL;
gboolean found = FALSE;
+ if (out_rsvp_requested)
+ *out_rsvp_requested = FALSE;
+
attendee = icalcomponent_get_first_property (icalcomp, ICAL_ORGANIZER_PROPERTY);
if (attendee) {
attendee_str = icalproperty_get_organizer (attendee);
@@ -3053,6 +3076,7 @@ ecb_ews_get_current_user_meeting_reponse (ECalBackendEws *cbews,
attendee_mail = attendee_str;
if (attendee_mail && current_user_mail && g_ascii_strcasecmp (attendee_mail,
current_user_mail) == 0) {
response = icalproperty_get_parameter_as_string (attendee, "PARTSTAT");
+ ecb_ews_get_rsvp (attendee, out_rsvp_requested);
found = TRUE;
}
}
@@ -3065,6 +3089,7 @@ ecb_ews_get_current_user_meeting_reponse (ECalBackendEws *cbews,
g_return_val_if_fail (attendee != NULL, NULL);
response = icalproperty_get_parameter_as_string (attendee, "PARTSTAT");
+ ecb_ews_get_rsvp (attendee, out_rsvp_requested);
found = TRUE;
} else if (!found) {
ESourceRegistry *registry;
@@ -3083,6 +3108,7 @@ ecb_ews_get_current_user_meeting_reponse (ECalBackendEws *cbews,
if (attendee) {
response = icalproperty_get_parameter_as_string (attendee, "PARTSTAT");
+ ecb_ews_get_rsvp (attendee, out_rsvp_requested);
found = TRUE;
}
@@ -3146,6 +3172,7 @@ ecb_ews_do_method_request_publish_reply (ECalBackendEws *cbews,
icalcomponent *subcomp,
const gchar *response_type,
const gchar *user_email,
+ gboolean rsvp_requested,
GCancellable *cancellable,
GError **error)
{
@@ -3182,8 +3209,8 @@ ecb_ews_do_method_request_publish_reply (ECalBackendEws *cbews,
e_ews_connection_create_items_sync (
cbews->priv->cnc,
EWS_PRIORITY_MEDIUM,
- "SendAndSaveCopy",
- NULL,
+ rsvp_requested ? "SendAndSaveCopy" : "SaveOnly",
+ rsvp_requested ? NULL : "SendToNone",
NULL,
e_cal_backend_ews_prepare_accept_item_request,
&convert_data,
@@ -3355,13 +3382,14 @@ ecb_ews_receive_objects_sync (ECalBackendSync *sync_backend,
subcomp = icalcomponent_get_next_component (icalcomp, kind)) {
ECalComponent *comp;
const gchar *response_type;
+ gboolean rsvp_requested = FALSE;
/* getting a data for meeting request response */
- response_type = ecb_ews_get_current_user_meeting_reponse (cbews, subcomp, user_email);
+ response_type = ecb_ews_get_current_user_meeting_reponse (cbews, subcomp, user_email,
&rsvp_requested);
comp = e_cal_component_new_from_icalcomponent (icalcomponent_new_clone (subcomp));
- success = ecb_ews_do_method_request_publish_reply (cbews, comp, subcomp,
response_type, user_email, cancellable, error);
+ success = ecb_ews_do_method_request_publish_reply (cbews, comp, subcomp,
response_type, user_email, rsvp_requested, cancellable, error);
do_refresh = TRUE;
@@ -3380,7 +3408,7 @@ ecb_ews_receive_objects_sync (ECalBackendSync *sync_backend,
const gchar *response_type;
/* getting a data for meeting request response */
- response_type = ecb_ews_get_current_user_meeting_reponse (cbews, subcomp, user_email);
+ response_type = ecb_ews_get_current_user_meeting_reponse (cbews, subcomp, user_email,
NULL);
if (g_strcmp0 (response_type, "ACCEPTED") == 0) {
gchar **split_subject;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]