Deleting an "exception" occurrence of a modified recurring events series can lead to inconsistent UI/backend state, and data loss on Google Calendar over EDS
In some cases, GNOME Calendar fails to detect/warn that an event is recurrent, even though it actually is an exception to a recurrent event séries and is actually treated as part of the recurring series, in the backend (though there might be something special going on with GOA vs EDS there).
Reproduction steps
This one is a bit tricky to trigger, but here are the steps:
- In Google/NextCloud Calendar, create a recurring weekly event (on Tuesdays for example)
- In Google/NextCloud Calendar, drag one of the events' occurrences across to another cell in the month view (i.e. creating an exception to the recurrence rule).
- In GNOME Calendar, synchronize your calendars to see the changes.
- In GNOME Calendar, click the moved event occurrence (the exception, not the regular/untouched repeat occurrences). In the edit dialog, you will notice that it does not mention the event as being recurrent at all...
- Click the Delete button to attempt to delete that "exception"
Actual results
- In Google calendar over EDS: The ENTIRE repeating events serie is deleted from the frontend and backend, without any warning/prompt, instead of deleting that single occurrence. Note that this might take a few seconds to happen (for the changes to be visually reflected in the month view, for example). The changes are reflected in Google Calendar's web UI as well.
- In a NextCloud calendar over GOA: the entire repeating events serie disaappears from the GNOME Calendar UI, but the changes are applied correctly in the backend / in Evolution, and they reappear in the GNOME Calendar UI upon restarting the app.
As the outcomes are different, here are separate demonstration videos for each.
Video of the issue's variant 1 occurring with Google Calendar over EDS:
gnome-calendar-recurrence-exception-deletion-issue-282--online-calendar-google
Video of the issue's variant 2 occurring with a NextCloud calendar connected via GOA:
gnome-calendar-recurrence-exception-deletion-issue-282--online-calendar
Expected results
- UI frontend should reflect the state of the backend
- In all cases GNOME Calendar would show you a confirmation/question dialog that allows you to confirm what you want to do (delete the single occurrence, all the following occurrences, all the occurrences, or do nothing)… but it doesn't happen in the case of Google Calendar, leading to dangerous data loss that cannot be undone (because when the recurrences deletion have been applied, as it takes a few seconds, the floating ability to undo has disappeared!)
- Reminder: it does prompt you if:
- you try to delete one of the other untouched occurrences instead
- you are doing this to local or nextcloud calendars instead of Google Calendar over EDS
- Reminder: it does prompt you if:
Notes:
- I have only tried this in month view.
- It still happens with version 43.1 (which had received some significant fixes to recurrence)
- It happens with online accounts, but apparently not local calendars
Video of the issue not occurring with local calendars:
gnome-calendar-recurrence-exception-deletion-issue-282--local-calendar