nextcloud / nextcloud/calendar

Sync changes of properties of calendars

Open
#6,167 2 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. to triage enhancement skill:frontend
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.

Remote changes of properties of calendars should be synced in the background. This would make the auto-refresh complete now that we sync events and new calendars.

A bit of context: I didn't include this in auto-refresh PR mentioned below because there were some technical issues.

Here is the summary:

  • Changing calendars triggers the eventSources computed prop of CalendarGrid to be reevaluated
  • This triggers the options computed prop to be reevaluated
  • This triggers FullCalendar options to be reloaded by their internal Vue-to-React bridge

Problem: The bridge pauses rendering while reloading options to prevent rendering issues and race conditions.

This manifests in visual artifacts like flickering while the new events are asynchronously loaded. While the network request is in process, all events from the refreshed calendar will vanish and then reappear again. We are talking about a time span of a second or less depending on the network request.

So this is only a visual bug but an unpleasant one. We could potentially work around this by being a little more careful with the computed props that are directly passed to FullCalendar.

Describe the solution you'd like

Sync remotely changed properties of calendars without refreshing the page. This includes the display name, calendar color, enabled state etc.

Describe alternatives you've considered

Don't sync properties.

Additional context

A nice follow-up to https://github.com/nextcloud/calendar/pull/6152.

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 reading the auto-refresh work in pull request #6152 and trace CalendarGrid's eventSources and options computed properties. Review how the FullCalendar Vue-to-React bridge reloads options and pauses rendering. Done means remotely changed calendar properties such as display name, color, and enabled state sync in the background without a page refresh or event flicker.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.