[dev] Changing start time of a recurring event series.
Michael J Rubinsky
mrubinsk at horde.org
Thu Jan 21 21:36:37 UTC 2016
In working on EAS 16 support, I've come across an issue that needs addressing.
The main purpose of EAS 16 is to improve reliability in calendar
synchronization - especially with respect to recurrence. One of the
changes in the protocol (paraphrased from the specs):
"In protocol version 16.0, changing the start or end time of a
recurring series will delete any exceptions
present on the calendar item."
Indeed, when using a 16.0 capable client, editing the series on the
client does remove all the exceptions on the event. While this *does*
make sense to me, since the exceptions were made based on a different
original event - it's not how kronolith currently works.
Exceptions are keyed to the base event by the "exceptionOriginalDate"
- which is basically the timestamp of when the event would have
normally occured before it was added as an exception (this is true in
both Kronolith and ActiveSync clients).
I think we should change Kronolith to behave the same as EAS 16 - that
is changing the recurrence series start/end times should remove all
exceptions. This is why:
1) While we currently make an attempt to update the
exceptionOriginalDate when events are modified in Kronolith, this only
works if the start/end times haven't moved to a different day and the
recurring series type hasn't changed. E.g., see Bug: 13512. This
"fixed" the issue, but only because the events don't change days and
the series hasn't otherwise drastically changed (like going from every
week to every other week). This is because we can't make a 100%
accurate assumption as to what day any particular exception would have
normally fallen on - or even if it would have normally occurred on
that day anymore.
2) It's inconsistent with how a major sync protocol now works. Yeah, I
know this is a weak argument, but consider the main reason for
updating the protocol was to fix many of the things that were causing
issues with recurring events.
3) There is no way to prevent the exceptions from being removed on the
client - it does so automatically (and does NOT issue any delete
commands to the server because it's assumed that they will be removed
server side). So this MUST be implemented this way when the change
comes from an ActiveSync client. Otherwise, the sync client and the UI
will no longer be in sync. Implementing it in one spot doesn't make
much sense to me - and initial trials in this regard led to duplicated
events on both the client and UI.
Since this is a fairly big change from a user experience view, I
wanted to get some feedback here before implementing this. The other
option is to disassociate the exceptions from the base event - turning
them into "normal" events any time the base event's start/end times
change or the series properties change. This is more complicated
because we need to add those events as new so the history system picks
them up to sync. It also still leads to inconsistencies between the
behavior when editing on the client vs the UI.
--
mike
The Horde Project
http://www.horde.org
https://www.facebook.com/hordeproject
https://www.twitter.com/hordeproject
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5751 bytes
Desc: S/MIME Signature
URL: <http://lists.horde.org/archives/dev/attachments/20160121/8e3e3468/attachment.bin>
More information about the dev
mailing list