nextcloud / nextcloud/calendar
Can't delete birth date events
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 1.2k
- Forks
- 332
- Avg merge
- 16h 13m
- Merged PRs (30d)
- 137
Description
Steps to reproduce
- Add a birthdate to a contact.
- Import/delete/re-import contacts same .vcf file.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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