nextcloud / nextcloud/calendar

Can't delete birth date events

Open
#5,894 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Steps to reproduce
  1. Add a birthdate to a contact.
  2. Import/delete/re-import contacts same .vcf file.
  3. Try to delete it from Calendar app but there is no option to do so.
Expected behavior

There should be an option in the event's settings but there isn't.

Actual behaviour

There is no option to delete the event in the settings and calendar is synced as read only to DAVx5 so can't delete it either from Android.
Every time you re-import the .vcf file, it add the same birth date event again to the database:

> select id from oc_calendarobjects where calendardata like '%Saad%'\G;
*************************** 1. row ***************************
id: 6
*************************** 2. row ***************************
id: 12
*************************** 3. row ***************************
id: 22
*************************** 4. row ***************************
id: 30
*************************** 5. row ***************************
id: 32
5 rows in set (0.000 sec)
Calendar app version

4.6.7

CalDAV-clients used

DAVx5

Browser

Firefox

Client operating system

Linux

Server operating system

Linux

Web server

Nginx

Database engine version

MariaDB

PHP engine version

8.1

Nextcloud version

28.0.4

Updated from an older installed version or fresh install

Fresh install

List of activated apps

Enabled:

  • activity: 2.20.0
  • calendar: 4.6.7
  • circles: 28.0.0
  • cloud_federation_api: 1.11.0
  • comments: 1.18.0
  • contacts: 5.5.3
  • contactsinteraction: 1.9.0
  • dashboard: 7.8.0
  • dav: 1.29.1
  • deck: 1.12.2
  • federatedfilesharing: 1.18.0
  • federation: 1.18.0
  • files: 2.0.0
  • files_pdfviewer: 2.9.0
  • files_reminders: 1.1.0
  • files_sharing: 1.20.0
  • files_trashbin: 1.18.0
  • files_versions: 1.21.0
  • firstrunwizard: 2.17.0
  • integration_jira: 1.1.0
  • logreader: 2.13.0
  • lookup_server_connector: 1.16.0
  • mail: 3.5.7
  • nextcloud_announcements: 1.17.0
  • notes: 4.9.4
  • notifications: 2.16.0
  • oauth2: 1.16.3
  • password_policy: 1.18.0
  • passwords: 2024.3.10
  • photos: 2.4.0
  • privacy: 1.12.0
  • provisioning_api: 1.18.0
  • qownnotesapi: 23.12.0
  • recommendations: 2.0.0
  • registertocontact: 0.0.1
  • registration: 2.4.0
  • related_resources: 1.3.0
  • serverinfo: 1.18.0
  • settings: 1.10.1
  • sharebymail: 1.18.0
  • spreed: 18.0.5
  • support: 1.11.1
  • survey_client: 1.16.0
  • systemtags: 1.18.0
  • tasks: 0.15.0
  • text: 3.9.1
  • theming: 2.3.0
  • twofactor_backupcodes: 1.17.0
  • twofactor_totp: 10.0.0-beta.2
  • updatenotification: 1.18.0
  • user_status: 1.8.1
  • viewer: 2.2.0
  • weather_status: 1.8.0
  • workflowengine: 2.10.0
    Disabled:
  • admin_audit: 1.18.0
  • bruteforcesettings: 2.8.0 (installed 2.8.0)
  • encryption: 2.16.0
  • files_external: 1.20.0
  • suspicious_login: 6.0.0 (installed 6.0.0)
  • user_ldap: 1.19.0
Nextcloud configuration
{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "nextcloud.kernelone.com",
            "localhost"
        ],
        "0": [
            "nextcloud.kernelone.com"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "28.0.4.1",
        "overwrite.cli.url": "https:\/\/nextcloud.kernelone.com",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "memcache.local": "\\OC\\Memcache\\APCu",
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "twofactor_enforced": "true",
        "twofactor_enforced_groups": [
            "admin",
            "Users",
            "Fresh_Registration"
        ],
        "twofactor_enforced_excluded_groups": [],
        "loglevel": 2,
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauth": 1,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "allow_local_remote_servers": true,
        "mail_smtpsecure": "ssl",
        "mail_smtpstreamoptions": {
            "ssl": {
                "allow_self_signed": true,
                "verify_peer": false,
                "verify_peer_name": false
            }
        },
        "maintenance_window_start": 1
    }
}
Web server error log

No response

Log file

No response

Browser log
Content-Security-Policy: Ignoring “blob:” within script-src-elem: ‘strict-dynamic’ specified [now](https://nextcloud.kernelone.com/apps/calendar/dayGridMonth/now)
JQMIGRATE: Migrate is installed, version 3.4.1 [jquery-migrate.min.js:2:980](webpack:///nextcloud/node_modules/jquery-migrate/dist/jquery-migrate.min.js)
Unified search initialized! [UnifiedSearch.vue:51](webpack:///nextcloud/core/src/views/UnifiedSearch.vue)
Search providers 
Array(16) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
[UnifiedSearchModal.vue:263](webpack:///nextcloud/core/src/views/UnifiedSearchModal.vue)
Contacts 
Array(26) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
[UnifiedSearchModal.vue:267](webpack:///nextcloud/core/src/views/UnifiedSearchModal.vue)
Registering notifications container as a menu [NotificationsApp.vue:219](webpack:///notifications/src/NotificationsApp.vue)
Notifications permissions granted [NotificationsApp.vue:453](webpack:///notifications/src/NotificationsApp.vue)
Polling interval updated to 30000 [NotificationsApp.vue:416](webpack:///notifications/src/NotificationsApp.vue)
Started background fetcher as session_keepalive is enabled [NotificationsApp.vue:275](webpack:///notifications/src/NotificationsApp.vue)
You need to fill either the text or the ariaLabel props in the button component. 
Object { text: undefined, ariaLabel: null }
 
Object { _uid: 24, _isVue: true, __v_skip: true, _scope: {…}, "$options": {…}, _renderProxy: {…}, _self: {…}, "$parent": {…}, "$root": {…}, "$children": [], … }
[index.module.js:2:811376](webpack:///calendar/node_modules/@nextcloud/vue/dist/index.module.js)
You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation. [NcInputField.js:2:29731](webpack:///calendar/node_modules/@nextcloud/vue/dist/Components/NcInputField.js)
@nextcloud/calendar-js app is using version 2.2023c of the timezone database [index.es.mjs:13553:12](webpack:///calendar/node_modules/@nextcloud/calendar-js/dist/index.es.mjs)
Fallback to locale en [moment.js:93:11](webpack:///calendar/src/utils/moment.js)
session heartbeat polling started [session-heartbeat.js:103:9](webpack:///nextcloud/core/src/session-heartbeat.js)
Got notification data, restoring default polling interval. [NotificationsApp.vue:376](webpack:///notifications/src/NotificationsApp.vue)
calendar home scanned 
Array(4) [ {…}, {…}, {…}, {…} ]
 
Array [ {…} ]
 
Array []
[calendars.js:596:10](webpack:///calendar/src/store/calendars.js)
The `name` prop is required. Please migrate away from the deprecated `title` prop. 5 [index.module.js:2:857755](webpack:///calendar/node_modules/@nextcloud/vue/dist/index.module.js)
The `name` prop is required. Please migrate away from the deprecated `title` prop.
Additional info

A workaround:

  • I edited the affected contact and removed the birth date field.
  • Deleted the events manually from the DB.
  • Added the event again to the contact so it was added once.

> delete from oc_calendarobjects where id in (6,12,22,30,32);

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

Reproduce the contact birth-date import and deletion flow in the Calendar app, starting with the calendar UI and the calendars.js entry point mentioned in the browser log. Trace how the event is stored in oc_calendarobjects and how repeated imports create duplicates. Done means birth-date events expose a deletion option and repeated import does not leave undeletable duplicates.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.