Non-recurring all-day events without explicit end time missing from calendar
Non-recurring all-day calendar events without explicit end time (DTEND
) are missing from the calendar due to end_time
being set to 0
via get_time_from_property
in calendar-server. This 0 end time is then sent to the shell via dbus. On the shell side _dateIntervalsOverlap
fails for this event and it is not shown in the calendar.
The calendar-server still correctly detects this as an all-day event and sends that as boolean flag to the shell. (Although using a fixed duration in seconds to determine this in get_ical_is_all_day
seems like it might break on a few occasions for other events...)
An example of such an event can be found on Nov 1st in this calendar: https://fcal.ch/privat/fcal_holidays.ics.php?hl=de&klasse=3&geo=3071
The question now is where should the correct end time according to the ical spec be generated, the calendar-server or the shell? Or should the shell make use of the all-day flag somehow when determining the overlap? And if this is best implemented in calendar-server are there convenience functions to get the the end time or should the shell just copy what the code linked below does?
(Recurring events should be working fine I think, because e-d-s is generating the correct end times for these: https://gitlab.gnome.org/GNOME/evolution-data-server/-/blob/master/src/calendar/libecal/e-cal-client.c#L2461)
CC: @mcrha