Skip to content

[Bug]: ProposalEditor renders before CalDAV store initializes — location field resets, selectedProposal is null #8166

@UberHeroX

Description

@UberHeroX

Steps to reproduce

  1. Open Nextcloud calendar
  2. Click the + next to Meeting Proposals in the left sidebar
  3. Fill in title, description, location duration and participants
  4. Click on any field eg. duration after setting the location
  5. Location resets to empty "No Location"
  6. Open an existing proposal to view responses. Second crash occurs.

Expected behavior

Location field retains its value when interacting with other fields
Proposal view renders without crashing

Actual behavior

Location is silently cleared when clicking other fields
ProposalEditor crashes with two Vue render errorrs
`[ERROR] calendar: [Vue error]: Error in render:
TypeError: can't access property "scheduleDefaultCalendarUrl",
this.currentUserPrincipal is undefined
ProposalEditor.vue:587

[ERROR] calendar: [Vue error]: Error in render:
TypeError: can't access property "title", e.selectedProposal is null
ProposalEditor.vue:967`

Calendar app version

6.2.2

CalDAV-clients used

None - web interface only

Browser

Firefox 149.0.2

Client operating system

Windows

Server operating system

Alpine Linux

Web server

Apache

Database engine version

MariaDB

PHP engine version

PHP 8.4

Nextcloud version

33

Updated from an older installed version or fresh install

None

List of activated apps

- activity: 6.0.0
  - admin_audit: 1.23.0
  - admincockpit: 1.2.3
  - announcementcenter: 7.3.0
  - app_api: 33.0.0
  - audiowaveform_preview_provider: 0.3.0
  - bruteforcesettings: 6.0.0
  - calendar: 6.2.2
  - circles: 33.0.0
  - cloud_federation_api: 1.17.0
  - comments: 1.23.0
  - contacts: 8.4.4
  - contactsinteraction: 1.14.1
  - dashboard: 7.13.0
  - dashlink: 1.2.1
  - dav: 1.36.0
  - deck: 1.17.1
  - done: 1.7.0
  - doom_nextcloud: 1.0.6
  - drawio: 4.2.3
  - federatedfilesharing: 1.23.0
  - federation: 1.23.0
  - files: 2.5.0
  - files_3dmodelviewer: 0.0.16
  - files_accesscontrol: 4.0.0
  - files_confidential: 4.1.0
  - files_downloadactivity: 1.18.1
  - files_downloadlimit: 5.1.0
  - files_external: 1.25.1
  - files_reminders: 1.6.0
  - files_sharing: 1.25.2
  - files_trashbin: 1.23.0
  - files_versions: 1.26.0
  - firstrunwizard: 6.0.0
  - forms: 5.2.7
  - integration_miro: 1.0.8
  - integration_overleaf: 2.0.1
  - logreader: 6.0.0
  - lookup_server_connector: 1.21.0
  - mail: 5.7.11
  - nextcloud_announcements: 5.0.0
  - notes: 4.13.1
  - notifications: 6.0.0
  - oauth2: 1.21.0
  - password_policy: 5.0.0
  - photos: 6.0.0
  - privacy: 5.0.0
  - profile: 1.2.0
  - provisioning_api: 1.23.0
  - recommendations: 6.0.0
  - related_resources: 4.0.0
  - richdocuments: 10.1.2
  - roll_dice_bot: 1.0.0
  - serverinfo: 5.0.0
  - settings: 1.16.0
  - sharebymail: 1.23.0
  - solitaire: 1.0.0
  - spreed: 23.0.3
  - support: 5.0.0
  - survey_client: 5.0.0
  - systemtags: 1.23.0
  - tables: 2.0.1
  - text: 7.0.0
  - theming: 2.8.0
  - twofactor_backupcodes: 1.22.0
  - twofactor_nextcloud_notification: 7.0.0
  - twofactor_totp: 15.0.0
  - updatenotification: 1.23.0
  - user_status: 1.13.0
  - viewer: 6.0.0
  - weather_status: 1.13.0
  - webhook_listeners: 1.5.0
  - whiteboard: 1.5.7
  - workflowengine: 2.15.0

Nextcloud configuration

{
    "system": {
        "htaccess.RewriteBase": "/",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "/var/www/html/apps",
                "url": "/apps",
                "writable": false
            },
            {
                "path": "/var/www/html/custom_apps",
                "url": "/custom_apps",
                "writable": true
            }
        ],
        "upgrade.disable-web": true,
        "instanceid": "***REMOVED***",
        "passwordsalt": "***REMOVED***",
        "secret": "***REMOVED***",
        "trusted_domains": [
            "REMOVED"
        ],
        "datadirectory": "***REMOVED***",
        "dbtype": "mysql",
        "version": "33.0.2.2",
        "overwrite.cli.url": "REMOVED",
        "overwriteprotocol": "https",
        "trusted_proxies": "***REMOVED***",
        "dbname": "***REMOVED***",
        "dbhost": "***REMOVED***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED***",
        "dbpassword": "***REMOVED***",
        "installed": true,
        "loglevel": 2,
        "maintenance": false,
        "mail_from_address": "***REMOVED***",
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_domain": "***REMOVED***",
        "mail_smtphost": "***REMOVED***",
        "mail_smtpport": "465",
        "mail_smtpauth": true,
        "mail_smtpname": "***REMOVED***",
        "mail_smtppassword": "***REMOVED***",
        "app_install_overwrite": [
            "files_downloadactivity",
            "solitaire",
            "multiboards"
        ]
    }
}

Web server error log


Log file

`{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T20:16:22+00:00","remoteAddr":"","user":"--","app":"no app in context","method":"","url":"--","scriptName":"/var/www/html/cron.php","message":"Skipping updater backup clean-up - could not find updater backup folder /var/www/html/data/updater-[REMOVED]/backups","userAgent":"--","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T20:29:19+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T20:39:45+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:16:56+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:23:40+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/apps/tables/table","scriptName":"/index.php","message":"Undefined array key \"sort\" at /var/www/html/custom_apps/tables/lib/Model/ViewUpdateInput.php#89","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:23:54+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/apps/notes/notes","scriptName":"/index.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:24:19+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:24:41+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:24:54+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:23:26+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":3,"time":"2026-04-17T22:33:22+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"jsresourceloader","method":"GET","url":"/settings/user/workflow","scriptName":"/index.php","message":"Could not find resource core/js/systemtags.js to load","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:33:34+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"no app in context","method":"GET","url":"/settings/admin/groupware","scriptName":"/index.php","message":"Invalid google_oauth_client_id data provided to provideInitialState by mail","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:33:34+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"no app in context","method":"GET","url":"/settings/admin/groupware","scriptName":"/index.php","message":"Invalid microsoft_oauth_client_id data provided to provideInitialState by mail","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:39:53+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:40:01+00:00","remoteAddr":"","user":"--","app":"no app in context","method":"","url":"--","scriptName":"/var/www/html/cron.php","message":"Skipping updater backup clean-up - could not find updater backup folder /var/www/html/data/updater-[REMOVED]/backups","userAgent":"--","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T23:05:32+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T23:05:33+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}`

Browser log

`Content-Security-Policy warnings 5
Content-Security-Policy: Ignoring "'self'" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring "https://cdn.jsdelivr.net" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring "https://[REMOVED]" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring "blob:" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring 'unsafe-eval' or 'wasm-unsafe-eval' inside "script-src-elem". now

[ERROR] calendar: [Vue error]: Error in render: TypeError: can't access property "scheduleDefaultCalendarUrl", this.currentUserPrincipal is undefined
Object { app: "calendar", uid: "[REMOVED]", level: 2, error: TypeError, vm: {…}, info: "render" }
index.mjs:47:17

@nextcloud/calendar-js app is using version 2.2025b of the timezone database index.mjs:251:13
Calendar API not initialized yet ProposalEditor.vue:587:1

[Miro] standalone modal is ready integration_miro-standalone.mjs:2:1539
Initializing unified search plugin-filters from talk search.js:22:10

[WARN] @nextcloud/vue: You need to fill either the text or the ariaLabel props in the button component.
Object { uid: "[REMOVED]", app: "@nextcloud/vue", level: 2, text: undefined, ariaLabel: null, instance: {…} }
index.mjs:44:17
[WARN] @nextcloud/vue: You need to fill either the text or the ariaLabel props in the button component.
Object { uid: "[REMOVED]", app: "@nextcloud/vue", level: 2, text: undefined, ariaLabel: null, instance: {…} }
index.mjs:44:17

Notifications permissions granted NotificationsApp.vue:449:13
Polling interval updated to 30000 NotificationsApp.vue:412:12
Started background fetcher as session_keepalive is enabled NotificationsApp.vue:279:13
Got notification data, restoring default polling interval. NotificationsApp.vue:368:13

calendar home scanned
Array [ {…}, {…} ]
Array [ {…} ]
Array []
calendars.js:271:12

Skipping availability fetch for non-internal participant:
Object { id: Getter & Setter, name: Getter & Setter, address: Getter & Setter, attendance: Getter & Setter, status: Getter & Setter, realm: Getter & Setter, … }
ProposalEditor.vue:967:1
(repeated 5 times on initial load)

This page is in Quirks Mode. Page layout may be impacted. For Standards Mode use "<!DOCTYPE html>". blank

[ERROR] calendar: [Vue error]: Error in render: TypeError: can't access property "title", e.selectedProposal is null
Object { app: "calendar", uid: "[REMOVED]", level: 2, error: TypeError, vm: {…}, info: "render" }
index.mjs:47:17

Skipping availability fetch for non-internal participant:
Object { id: Getter & Setter, name: Getter & Setter, address: Getter & Setter, attendance: Getter & Setter, status: Getter & Setter, realm: Getter & Setter, … }
ProposalEditor.vue:967:1
(repeated 5 more times)`

Additional info

Root cause:
The log shows Calendar API not initialized yet at ProposalEditor.vue:587, followed by calendar home scanned appearing later. This confirms the component renders before the async CalDAV store resolves the user principal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    1. to developAccepted and waiting to be taken care ofbug

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions