nextcloud / nextcloud/calendar

Preserve custom CalDAV / iCalendar properties when events are updated (partial/delta update instead of full overwrite)

Open
#7,764 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. to triage enhancement
Dominant language
JavaScript
Stars
1.2k
Forks
332
Avg merge
16h 13m
Merged PRs (30d)
137

Description

Is your feature request related to a problem? Please describe.

We’re using Nextcloud Calendar as a CalDAV server and store custom iCalendar properties on events (e.g. X-SENDENTCALENDAR-ID, X-SENDENT-METADATA, or similar).

Current behavior:

  1. Client A creates an event and invites Client B
  2. Client B accepts the invitation, sets custom properties in event
  3. Client A modifies their entry, e.g. other event date, which pushes update towards Client B. As soon update is accepted by Client B, custom properties are gone.

It seems to be the case that any customizations Client B made (in this case custom properties), are always fully overwritten by the event details pushed by Client A.

The proposed solution would entail the retaining of custom properties when such event is updated once more.


Related but more difficult:
The above scenario also applies to regular modifications that client B would make, for example: reminders are overwritten, the status (busy/available) is overwritten. The UI allows client B to modify the event of client A to suit client B their own needs. The behavior is unexpected as soon client A invites client B, client B further 'tailors' the event to their needs, client A pushes an update and client B then loses their modifications.

Describe the solution you'd like

When an event is updated via CalDAV, custom / unknown properties of the VEVENT should be preserved, as long as the updating client did not explicitly remove them.

The server should perform something akin to a delta / partial update:

  • Only change the properties that were actually modified (e.g. SUMMARY, DTSTART, DTEND, etc.)
  • Keep existing X-... properties and other unknown properties intact.
Describe alternatives you've considered

None.

Additional context

No response

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

The issue names no files, tests, or entry points. Start by locating the CalDAV event-update path and existing VEVENT handling, then identify tests covering attendee updates and property preservation; done means explicit updates apply without removing unknown or attendee-local properties unless they were explicitly deleted.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
api, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.