nextcloud / nextcloud/calendar
Alarm trigger doesn't consider timezone
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 1.2k
- Forks
- 332
- Avg merge
- 16h 13m
- Merged PRs (30d)
- 137
Description
Note: Not sure where to post this issue, since I'm not sure on how to understand RFCs.
Steps to reproduce
- Be on another TZ than UTC (calendar must have this TZ)
- Add a full day event
- Add a reminder "on the day of the event" at a certain time, say 17:30 here
Result
DTSTART;VALUE=DATE:20200130
DTEND;VALUE=DATE:20200202
[⋅⋅⋅]
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;RELATED=START:PT17H30M
END:VALARM
This will be interpreted by server as 17H30 UTC, not in user's local timezone. Since it's a full day event, the event DTSTART hasn't got any timezone information, and sabre/object doesn't seem to consider the calendar's VTIMEZONE to get effective trigger time.
RFC 5545 says
The "TRIGGER" property specifies a duration prior to the start of an event or a to-do. The "TRIGGER" edge may be explicitly set to be relative to the "START" or "END" of the event or to-do with the "RELATED" parameter of the "TRIGGER" property. The "TRIGGER" property value type can alternatively be set to an absolute calendar date with UTC time.
So…I'm guessing it's 17:30 relative to an UTC date after all, but it's quite odd for users to expect this. Should we only work with absolute dates instead ?
Evolution and Thunderbird Lightning don't really offer such a functionality. And Google Calendar only has gives TRIGGER:P0DT17H30M0S for the same parameters…
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the timezone difference with the supplied ICS event and alarm while using a non-UTC calendar timezone. Read the RFC 5545 TRIGGER rules and inspect how sabre/object interprets the date-only DTSTART and calendar VTIMEZONE; done means the expected behavior is decided and the alarm trigger is handled consistently with that decision.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100