Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quotes in TYPE are still being set #2866

Open
nicokaiser opened this issue Jul 23, 2022 · 32 comments
Open

Quotes in TYPE are still being set #2866

nicokaiser opened this issue Jul 23, 2022 · 32 comments
Labels

Comments

@nicokaiser
Copy link
Contributor

Describe the bug

This is essentially #1107, which is still unresolved (but cannot be re-opened):

In the TYPE attribute, quotes are added:

EMAIL;TYPE="INTERNET,HOME,pref":user@example.com
TEL;TYPE="HOME,VOICE,pref":+49 123 456789
TEL;TYPE="CELL,VOICE":+49 123 456789

This leads to several platforms not interpreting these values correctly. On iOS this entry is being displayed as "CELL (presumably split at the ,).

In #1107 (comment) it is mentioned that changing the vCard version to 4.0 may fix this, so either the version has to be correct, or the quotes have to be removed.

Steps to reproduce

  1. Add a contact
  2. Add a cell phone numer
  3. Sync to iOS via CardDAV
  4. See the entry as "CELL

Expected behavior

The entry type should be Mobile (or something localized by iOS) instead of "CELL.

Actual behavior

The entry type is displayed as "CELL.

Contact version

4.2.0

Operating system

No response

PHP engine version

No response

Web server

No response

Database

No response

Additional info

No response

@OmarWazzan
Copy link

In #1107 (comment) it is mentioned that changing the vCard version to 4.0 may fix this, so either the version has to be correct, or the quotes have to be removed.

I can confirm that this does not work. I changed the version number on my contacts list before importing at the quotes were still added.

I also tried importing the contacts, exporting them, manually fixing the field, and then re-importing it and the issue still appeared.

However, if I imported a contact, and then reset the TYPE attribute (i.e, from mobile -> none -> mobile), then the field is properly stored.

This leads me to believe that the issue is not with all contacts, but rather with import/export of them.

@HooK81
Copy link

HooK81 commented Aug 6, 2022

I had this issue from the beginning, but today I have updated NextCloud to v24 and Contacts app to v4.2.0.

At first the issue was still there. See on my phone "HOME" instead of "domicile" (in french).
I had to update manually phone type on all my contacts in the NextCloud web app.
Now the problem is gone.

Types are correct on NextCloud web app and fortunately on my iPhone using iOS 15.6.

I guess there were something recorded badly in the contacts informations.

@OmarWazzan
Copy link

I had to update manually phone type on all my contacts in the NextCloud web app.

Unfortunately that's an infeasible solution for those of us with 500+ contacts

@nicokaiser
Copy link
Contributor Author

Updating all contacts one by one worked for some versions now. However, at some point (!) the types break again, I did not figure out if it's after some time or after syncing with macOS (I don't use the web frontend for editing contacts). This is even more frustrating, when you spent hours fixing the contacts, and then after months the broken type names start to creep in again...

@miguelarios
Copy link

miguelarios commented Aug 26, 2022

This is happening to me too. I transitioned from mailbox.org contacts to nc contacts via export/import to nc webuiand the "CELL, "WORK etc appeared. I even tried exporting directly from Mac contacts (which was synced to Mailbox.org contacts and same thing. I have 600+ contacts so i do not want to have to edit everyone of them. Is there a way to batch regex edit the vcf file to temporarily correct this?

@JonathanBouligny
Copy link

JonathanBouligny commented Oct 19, 2022

Workaround (that worked for me) going from Apple to Nextcloud.

  1. Export from Apple in vCard
  2. Import into Google Contacts.
  3. Export from Google Contacts using vCard
  4. Import into Nextcloud

I assumed that googles code would clean up weird contact values on export which seems to be correct. (I cant remember if i read this somewhere or if I made it up, whatever it works.)

@miguelarios
Copy link

Workaround (that worked for me) going from Apple to Nextcloud.

  1. Export from Apple in vCard

  2. Import into Google Contacts.

  3. Export from Google Contacts using vCard

  4. Import into Nextcloud

I assumed that googles code would clean up weird contact values on export which seems to be correct. (I cant remember if i read this somewhere or if I made it up, whatever it works.)

@JonathanBouligny i tried this just now but it skips about 200 or so of my 605 contacts. I don’t know why. Nextcloud registers the 605 contacts but my iPhone didn't sync all of them. Unsure why.

@JonathanBouligny
Copy link

What part skips 200 contacts? Step 1,2,3, or 4?

@miguelarios
Copy link

@JonathanBouligny the last part syncing to iOS from Nextcloud CardDAV.

I looked at the final numbers and while my Nextcloud web had 605 my iPhone only had 500ish

@nicokaiser
Copy link
Contributor Author

nicokaiser commented Nov 4, 2022

Maybe the culprit is Thunderbird's CardDAV implementation in this case:

  1. Create a contact in macOS Contacts, add a "Mobile" phone number:

The line in the VCF export looks like this:

TEL;TYPE=CELL,VOICE,pref:+1 555 0000000

Open Thunderbird and change something in the phone number (not the type):

TEL;TYPE="CELL,VOICE,pref":+1 555 0000001

  1. Wait for macOS to download the changes. It will display CELL,VOICE,pref instead of Mobile

macos-attr

At this point, also iOS decides to split the TYPE at commas (ignoring quotes) and use the first for display: "CELL

ios-attr

I am not sure if this is a Nextcloud issue, or if

  • Thunderbird is wrong by adding quotes around the type (which I assume), OR
  • macOS/iOS are wrong by splitting the quoted array of types

@nicokaiser
Copy link
Contributor Author

nicokaiser commented Nov 4, 2022

From how I read the vCard Format Specification:

Property parameter values MUST NOT contain the DQUOTE (U+0022) character

So I added a bug report on Bugzilla for Thunderbird here: https://bugzilla.mozilla.org/show_bug.cgi?id=1799096

@miguelarios Could this be the case for your setup as well?

@JonathanBouligny
Copy link

@JonathanBouligny the last part syncing to iOS from Nextcloud CardDAV.

I looked at the final numbers and while my Nextcloud web had 605 my iPhone only had 500ish

Im not sure about that. I didn't have the issue getting them imported. I turned off all other contact stores except NextCloud. Id say try it again with those 100 contacts? Or reupload the whole thing a second time I think nextcloud can screen duplicates.

@JonathanBouligny
Copy link

JonathanBouligny commented Nov 7, 2022

@JonathanBouligny the last part syncing to iOS from Nextcloud CardDAV.

I looked at the final numbers and while my Nextcloud web had 605 my iPhone only had 500ish

This may be a separate problem than the quote problem. I suggest opening a new issue here on github.

@plumped
Copy link

plumped commented Nov 12, 2022

If i create the contact over the iPhone (added DAV account), the contact will be saved in Nextcloud Contacts with:

TEL;TYPE=CELL,VOICE,pref:45121542184
and is displayed correctly on both variants

If i create it instead in the Nextcloud Webapp directly in contacts app it creates as follows:

TEL;TYPE="CELL,VOICE,pref";VALUE=UNKNOWN:+21323568 (NOTE the VALUE=UNKNOWN here which seems to make problems)

Interessting Part here is: everything else seems to work with this kind of notation. for example
ITEM1.ADR;TYPE="HOME,pref" = "Address"
EMAIL;TYPE="INTERNET,HOME,pref" = "Private" in the Mail category.
So the rest is correctly shown in the ios contacts.

I have now come to the conclusion that only the "Cell" is affected.

in Addition:
The wrong one seems to create an "VALUE=UNKNOWN" tag which seems to be redundant....
failing: TEL;TYPE="CELL,VOICE,pref";VALUE=UNKNOWN:4565465
correct TEL;TYPE=CELL,VOICE,pref:45121542184

Possible Solution:
From my point of view the problem should be solved as soon as the VALUE=UNKNOWN is not generated

In addition: If i import the corrected vcf without the VALUE=UNKNOWN, all contacts will be modified and include VALUE=UNKNOWN again.

In a next step i edited the contact on ios, and have choosen the type given by apple "Mobile" and "Work". after sync i downloaded the vcf contacts again.

the only contact i have changed on the Phone (and is correct now) is now shown as:

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iOS 16.2//EN
N:Marta;Main;;;
FN:Main Marta
ORG:ewz;
EMAIL;TYPE=INTERNET,WORK,pref:test.test@test.com
TEL;TYPE=WORK,VOICE,pref:+22222222222
TEL;TYPE=CELL,VOICE:+222222222
REV:2022-11-12T13:48:40Z
UID:3ad7bbb4-301f-4e0f-a7d7-d10985f695d4
END:VCARD

all the others (wrong ones):

BEGIN:VCARD
VERSION:3.0
PRODID;VALUE=TEXT:-//Apple Inc.//iOS 15.1.1//EN
N:Doe;John;;;
FN:John Doe
TEL;TYPE="WORK,VOICE,pref";VALUE=UNKNOWN:+45454545454
REV;VALUE=DATE-TIME:20211201T175114Z
UID:655a6301-e6cf-4271-9b86-661f65582bbb
END:VCARD

Hope this helps!!

@stephanbogner
Copy link

Hey there,

I am also having the same problem.

Steps:

  1. I recently migrated contacts from CardDAV hosted on All-Inkl to Nextcloud (v24.0.6).
  2. I exported the contacts as .vcf-file and used the Nextcloud contacts app to import the contacts
    • The vcf does not contain any quotes (see below for one contact that I adjusted to respect privacy)
BEGIN:VCARD
VERSION:4.0
UID:4dcf7bc1-2af9-44b5-a39d-12345679a0b3
FN:John Doe
N:Doe;John;;;
TEL;TYPE=home,voice;PREF=1:+1 (617) 123-4567
ORG:SomeCompany;
X-ABUID:D1234567-C0FD-4DBC-8DED-400C589BBA05:ABPerson
PRODID:-//WMAPI Contacts//WMAPI Contacts//EN
END:VCARD

Result:

  • Note: I have not editted the contacts yet at all. So the result is directly after the import
  • On iOS it shows "home
  • In the contacts app in Gnome/Ubuntu it (I assume it uses the fallback) Other
  • ➔ So it seems to me (as also @plumped's comment indicates), that the Nextcloud Webapp creates the quotes

@stephanbogner
Copy link

stephanbogner commented Nov 14, 2022

Some investigation:

  • The Contacts Web App uses the function importContactsIntoAddressbook
    • It uses the function parseVFC ... but that doesn't seem to contain any flaws
    • It also calls contact.addressbook.dav.createVCard(vData) which might be the root cause ... but I couldn't find any createVCard-function in the code
    • Or more likely the line const vData = contact.vCard.toString()
      • Funnily the contact class has a function called toStringStripQuotes but it's not used in the above code 🤔

@stephanbogner
Copy link

Some investigation:

* The Contacts Web App [uses](https://github.com/nextcloud/contacts/blob/1c1a1375db7abd755452a80aafedae06bdf4d173/src/components/AppNavigation/Settings/SettingsImportContacts.vue#L224) the function [importContactsIntoAddressbook](https://github.com/nextcloud/contacts/blob/1c1a1375db7abd755452a80aafedae06bdf4d173/src/store/addressbooks.js#L410)
  
  * It uses the function [parseVFC](https://github.com/nextcloud/contacts/blob/a7f286ae1605f61f72590661c8209da21ad636df/src/services/parseVcf.js#L34) ... but that doesn't seem to contain any flaws
  * It [also calls](https://github.com/nextcloud/contacts/blob/1c1a1375db7abd755452a80aafedae06bdf4d173/src/store/addressbooks.js#L426) `contact.addressbook.dav.createVCard(vData)`  which might be the root cause ... but I couldn't find any `createVCard`-function in the code
  * **Or more likely [the line](https://github.com/nextcloud/contacts/blob/1c1a1375db7abd755452a80aafedae06bdf4d173/src/store/addressbooks.js#L424) `const vData = contact.vCard.toString()`**
    
    * Funnily the contact class has a function called [toStringStripQuotes](https://github.com/nextcloud/contacts/blob/1c1a1375db7abd755452a80aafedae06bdf4d173/src/models/contact.js#L583) but it's not used in the above code thinking

So maybe the issue would be fixed if this line would be:

  • const vData = contact.toStringStripQuotes()
  • Instead of const vData = contact.vCard.toString()

But maybe a dev can jump in, as I don't know the codebase much 😅

@rakekniven
Copy link
Member

@ChristophWurst Can you or someone of your team please see this issue? Thanks.

@Bl4DEx
Copy link

Bl4DEx commented Jan 8, 2023

Hey there,

I recently came accross the same issue when migrating from iCloud to Nextcloud.

Are there any updates for this issue?

@Soulplayer
Copy link

Hello,

I'm having the same problem. It's an annoying bug. Can this be fixed?

Thank you,

Soul

@Casuallynoted
Copy link

I'm also having this issue and would love to see it resolved- maybe even a built in tool that can just go through the contacts and fix this?

@stephanbogner
Copy link

stephanbogner commented Feb 20, 2023

To the devs:
I understand this issue is not high on the priority (because it‘s not critical).
But as it affects all (or at least all migrating) iPhone users syncing their contacts over Nextcloud, it would be great if this could be resolved or at least some clarification given.

@ChristophWurst
Copy link
Member

I don't have time to look into this at the moment.

@rakekniven
Copy link
Member

rakekniven commented Feb 20, 2023

But as it affects all (or at least all migrating) iPhone users

We had that issue in the past but since a while it is gone and working reliable on 10 devices. All of them are running iOS v16.3.x and communicating with NC v25.0.3 by using the latest contact app.

@stephanbogner
Copy link

But as it affects all (or at least all migrating) iPhone users

We had that issue in the past but since a while it is gone and working reliable on 10 devices. All of them are running iOS v16.3.x and communicating with NC v25.0.3 by using the latest contact app.

Awesome to hear! How did you resolve it @rakekniven? Did you manually fix the existing contacts or reimport? And by using the latest contact app do you mean the one in Nextcloud or iOS/MacOS/etc.? (I only use Nextcloud to store contacts and then editing and creating happens in native apps)

@rakekniven
Copy link
Member

I meant the Contacts app from Nextcloud v5.1.0.
I usually do the editing with the Apple onBoard apps of macOS and iOS as well.

After it worked again, we started to manually fix (and also clean) the contacts when used. Not the best and effective way, but next time ;-)

It worked again after a BigSur update if I remember correctly. But unfortunately I don't have the details anymore.

@caplod
Copy link
Contributor

caplod commented Feb 23, 2023

With this commit import contacts in nextcloud via web doesn't add the quotes anymore.
So that IOS/Mac Addressbook shows correct labels.

@ChristophWurst
Copy link
Member

#3243 is in

@stephanbogner
Copy link

With this commit import contacts in nextcloud via web doesn't add the quotes anymore. So that IOS/Mac Addressbook shows correct labels.

That sounds awesome, thanks a lot!

@Soulplayer
Copy link

I see the update landed. Is there a way to fix these existing " quotes in bulk?

@caplod
Copy link
Contributor

caplod commented Mar 20, 2023

I think you could export all contacts, then create a new addressbook and reimport.

@MicMicMicMicMicMic
Copy link

Works for me now with your last advise. Thanks, great job!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests