nextcloud / nextcloud/contacts

Aggregate duplicate contact cards into a single entry in the frontend

Open
#5,246 11 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop enhancement feature: contacts
Dominant language
JavaScript
Stars
642
Forks
220
Avg merge
14h 39m
Merged PRs (30d)
51

Description

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
https://github.com/nextcloud/server/issues/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

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

Start by tracing the frontend contact-list rendering and the edit flow for writable versus read-only cards; no specific files or tests are named in the issue. Confirm how duplicate people are identified, then verify that one unified entry is displayed, edits affect only the writable card, and the separate backend cards remain intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.