[evolution-ews] I#151 - Calendar: Teams meeting may have invalid timezone information



commit 84c67edb2d422574c7304f507bf9dc6c04e5d2ad
Author: Milan Crha <mcrha redhat com>
Date:   Wed Apr 28 08:05:02 2021 +0200

    I#151 - Calendar: Teams meeting may have invalid timezone information
    
    Closes https://gitlab.gnome.org/GNOME/evolution-ews/-/issues/151

 src/EWS/calendar/e-cal-backend-ews-utils.c | 17 +++++++++++++++--
 src/EWS/calendar/e-cal-backend-ews.c       |  4 ++++
 2 files changed, 19 insertions(+), 2 deletions(-)
---
diff --git a/src/EWS/calendar/e-cal-backend-ews-utils.c b/src/EWS/calendar/e-cal-backend-ews-utils.c
index 7312f388..d9d016f6 100644
--- a/src/EWS/calendar/e-cal-backend-ews-utils.c
+++ b/src/EWS/calendar/e-cal-backend-ews-utils.c
@@ -2264,10 +2264,23 @@ e_cal_backend_ews_get_datetime_with_zone (ETimezoneCache *timezone_cache,
        if (!zone)
                zone = e_timezone_cache_get_timezone (timezone_cache, tzid);
 
-       if (!zone)
+       if (!zone) {
                zone = vcalendar ? i_cal_component_get_timezone (vcalendar, tzid) : NULL;
-       else
+
+               /* Workaround Teams bug - see https://gitlab.gnome.org/GNOME/evolution-ews/-/issues/151 */
+               if (!zone && vcalendar && strchr (tzid, ' ')) {
+                       gchar *tmp;
+
+                       tmp = g_strstrip (g_strdup (tzid));
+
+                       if (tmp && *tmp)
+                               zone = i_cal_component_get_timezone (vcalendar, tmp);
+
+                       g_free (tmp);
+               }
+       } else {
                g_object_ref (zone);
+       }
 
        i_cal_time_set_timezone (dt, zone);
 
diff --git a/src/EWS/calendar/e-cal-backend-ews.c b/src/EWS/calendar/e-cal-backend-ews.c
index d43e7af1..5fa1f661 100644
--- a/src/EWS/calendar/e-cal-backend-ews.c
+++ b/src/EWS/calendar/e-cal-backend-ews.c
@@ -704,6 +704,10 @@ ecb_ews_item_to_component_sync (ECalBackendEws *cbews,
                        start_tzid = e_ews_item_get_start_tzid (item);
                        end_tzid = e_ews_item_get_end_tzid (item);
 
+                       /* Workaround Teams bug - see 
https://gitlab.gnome.org/GNOME/evolution-ews/-/issues/151 */
+                       if (!start_tzid || !*start_tzid)
+                               start_tzid = end_tzid;
+
                        ical_start_tzid = e_cal_backend_ews_tz_util_get_ical_equivalent (start_tzid);
                        ical_end_tzid = e_cal_backend_ews_tz_util_get_ical_equivalent (end_tzid);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]