nextcloud / nextcloud/contacts

Multiple middle (additional) names from vCard are shown with comma

Open
#2,701 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug feature: contacts
Dominant language
JavaScript
Stars
642
Forks
220
Avg merge
14h 39m
Merged PRs (30d)
51

Description

Describe the bug

When a vCard with multiple middle names is uploaded, Nextcloud Contacts shows the middle names separted with commas instead of spaces.

Steps to reproduce
  1. Upload a vCard 4 containing N:Last;First;Middle1,Middle2;Pre.;Suff. (vCard 3 should also work because it has the same syntax and semantics in this case). For instance, you can
  2. use DAVx⁵ (create DAVx⁵ account with Nextcloud),
  3. create a contact with at least two middle names and a phone number,
  4. force synchronization.
  5. The middle name of the contact will be shown as Middle1,Middle2 instead of Middle1 Middle2. This is probably because the comma is used in vCard to separate entries, but Nextcloud Contacts interprets it as a single string.
  6. If you then edit the contact in Nextcloud Contacts (for instance, change the phone number), the comma in the middle names will be escaped "correctly". So the vCard is saved as N:Last;First;Middle1\,Middle2;Pre.;Suff., which will case the wrong comma to propagate into other clients.
Expected behavior

Multiple middle names should be separated by a space in the UI.

Actual behavior

Multiple middle names arew separated by a comma in the UI.

Contact version

4.1.0

Operating system

No response

PHP engine version

PHP 8.0

Web server

Nginx

Database

No response

Operating system

No response

List of activated Apps
Enabled:
  - accessibility: 1.9.0
  - activity: 2.15.0
  - calendar: 3.2.2
  - circles: 23.1.0
  - cloud_federation_api: 1.6.0
  - collectives: 0.22.22
  - comments: 1.13.0
  - contacts: 4.1.0
  - contactsinteraction: 1.4.0
  - dashboard: 7.3.0
  - dav: 1.21.0
  - federatedfilesharing: 1.13.0
  - files: 1.18.0
  - files_rightclick: 1.2.0
  - files_sharing: 1.15.0
  - files_trashbin: 1.13.0
  - files_versions: 1.16.0
  - files_videoplayer: 1.12.0
  - firstrunwizard: 2.12.0
  - impersonate: 1.10.0
  - integration_github: 1.0.2
  - integration_twitter: 1.0.2
  - logreader: 2.8.0
  - lookup_server_connector: 1.11.0
  - mail: 1.11.7
  - nextcloud_announcements: 1.12.0
  - notifications: 2.11.1
  - oauth2: 1.11.0
  - password_policy: 1.13.0
  - photos: 1.5.0
  - privacy: 1.7.0
  - provisioning_api: 1.13.0
  - serverinfo: 1.13.0
  - settings: 1.5.0
  - sharebymail: 1.13.0
  - sociallogin: 4.14.0
  - spreed: 13.0.4
  - support: 1.6.0
  - survey_client: 1.11.0
  - talk_matterbridge: 1.23.2
  - tasks: 0.14.4
  - text: 3.4.1
  - theming: 1.14.0
  - twofactor_backupcodes: 1.12.0
  - updatenotification: 1.13.0
  - user_status: 1.3.1
  - viewer: 1.7.0
  - weather_status: 1.3.0
  - workflowengine: 2.5.0
Disabled:
  - admin_audit
  - duplicatefinder: 0.0.13
  - encryption
  - federation: 1.3.0
  - files_external: 1.12.1
  - files_pdfviewer: 1.7.0
  - recommendations: 1.1.0
  - systemtags: 1.3.0
  - user_ldap
Nextcloud Signing status
No errors have been found.
Configuration report
{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "cloud.bitfire.at"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "overwrite.cli.url": "https:\/\/cloud.bitfire.at",
        "dbtype": "mysql",
        "version": "23.0.3.2",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "default_phone_region": "AT",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "sendmail",
        "mail_smtpauthtype": "LOGIN",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mysql.utf8mb4": true,
        "mail_sendmailmode": "smtp",
        "updater.release.channel": "stable",
        "activity_expire_days": 14,
        "filelocking.enabled": true,
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "memcache.local": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "port": -1,
            "password": "***REMOVED SENSITIVE VALUE***"
        },
        "maintenance": false,
        "theme": "",
        "loglevel": 2
    }
}
Additional info

No response

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 issue with the vCard N value shown in the report, then trace the Contacts vCard import, display, and edit flow. Done means multiple middle names appear separated by spaces in the UI and editing the contact does not rewrite them with an escaped comma.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.