diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2019-01-25 11:33:44 +0100 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2019-01-25 11:35:28 +0100 |
commit | 1f864843455282d4e4a02a46ad1560ed7abe27cf (patch) | |
tree | 44592ae63ef88482c284e4d2a8731b315bf6ced8 | |
parent | d982fcf753353236cbaa65a8715cbb4097d2e49f (diff) |
Fix displayName checks and replace FN if empty on validate
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | src/models/contact.js | 16 | ||||
-rw-r--r-- | src/services/checks/missingFN.js | 3 | ||||
-rw-r--r-- | src/services/validate.js | 4 |
3 files changed, 13 insertions, 10 deletions
diff --git a/src/models/contact.js b/src/models/contact.js index 1240d3d2..f12cef50 100644 --- a/src/models/contact.js +++ b/src/models/contact.js @@ -285,7 +285,10 @@ export default class Contact { const org = this.vCard.getFirstPropertyValue('org') // if ordered by last or first name we need the N property - if (orderKey && n) { + // ! by checking the property we check for null AND empty string + // ! that means we can then check for empty array and be safe not to have + // ! 'xxxx'.join('') !== '' + if (orderKey && n && n.join('') !== '') { switch (orderKey) { case 'firstName': // Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P. @@ -299,20 +302,19 @@ export default class Contact { } } // otherwise the FN is enough - if (this.vCard.hasProperty('fn')) { + if (fn) { return fn } // BUT if no FN property use the N anyway - if (n) { + if (n && n.join('') !== '') { // Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P. // -> John Stevenson return n.slice(0, 2).reverse().join(' ') } // LAST chance, use the org ir that's the only thing we have - if (org) { - // Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P. - // -> John Stevenson - return org + if (org && org.join('') !== '') { + // org is supposed to be an array but is also used as plain string + return Array.isArray(org) ? org[0] : org } return '' diff --git a/src/services/checks/missingFN.js b/src/services/checks/missingFN.js index 3c7ea9e6..1f17afc8 100644 --- a/src/services/checks/missingFN.js +++ b/src/services/checks/missingFN.js @@ -27,7 +27,8 @@ export default { name: 'missing FN', run: contact => { - return !contact.vCard.hasProperty('fn') + return !contact.vCard.hasProperty('fn') // No FN + || contact.vCard.getFirstPropertyValue('fn') === '' // Empty FN }, fix: contact => { if (contact.vCard.hasProperty('n')) { diff --git a/src/services/validate.js b/src/services/validate.js index 986dd0a2..be080988 100644 --- a/src/services/validate.js +++ b/src/services/validate.js @@ -33,10 +33,10 @@ export default function(contact) { // A fix is needed, running ⏳ if (!check.fix(contact)) { // FAILURE 🙅 - console.warn('The following contact needed a correction that failed', check.name, contact) + console.warn('The following contact needed a correction that failed:', check.name, contact) } else { // SUCCESS 💪 - console.info('The following contact has been repaired', check.name, contact) + console.info('The following contact has been repaired:', check.name, contact) } } }) |