nextcloud / nextcloud/calendar

Alarm trigger doesn't consider timezone

Open
#1,940 5 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop bug
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.