Skip to content

Aggregate duplicate contact cards into a single entry in the frontend #5246

@tplobo

Description

@tplobo

Is your feature request related to a problem? Please describe.

When a contact exists in multiple address books (e.g., a local card and a system/read-only card), duplicate contact cards appear in the app, causing confusion and a cluttered contact list.

Describe the solution you'd like

On the frontend, duplicate contact cards for the same person should be automatically aggregated and displayed as a single unified contact entry. The underlying separate cards would remain intact on the backend. When a user edits the aggregated contact, changes should be written only to the writable card (i.e., the non-system address book card), leaving the read-only system card untouched.

Related
nextcloud/server#4643

Original ticket text

Describe the bug

I am using the Contacts app to organize different groups of people involved in a project, and I need to invite a few external users as guests to allow them to contribute to it. Doing so bypasses contacts already defined in my contact book and instead creates duplicate (read-only) contacts. I am unable to merge custom and read-only contacts, and cannot edit the guest-user contact to use it as the main contact with contact groups and other information. I am forced to have two contacts in the book.

Potential follow-up of #1772.

Steps to reproduce

  1. Create a contact with an external email address (creates custom contact).
  2. Try to share a folder in the Files app using the same external email address (it does not list your new contact).
  3. Instead, invite that person as a guest user using the same external email address (creates guest contact).

OR

  1. Share a folder in the Files app using an external email address, by inviting that person as a guest user (creates guest contact).
  2. Create a contact with the same external email address (creates custom contact).

Expected behavior

I expected to have a single contact per external email address.

Actual behavior

In either case listed above, one can go to Contacts and see the duplicates. The guest contact has an "compound" email like "external@address.domain@my-server.domain", is "read-only" and cannot be merged.

Contact version

31.0.14 Enterprise

Operating system

No response

PHP engine version

None

Web server

None

Database

None

Additional info

No response

Metadata

Metadata

Assignees

No one assigned

    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