summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2019-01-25 11:33:44 +0100
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2019-01-25 11:35:28 +0100
commit1f864843455282d4e4a02a46ad1560ed7abe27cf (patch)
tree44592ae63ef88482c284e4d2a8731b315bf6ced8
parentd982fcf753353236cbaa65a8715cbb4097d2e49f (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.js16
-rw-r--r--src/services/checks/missingFN.js3
-rw-r--r--src/services/validate.js4
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)
}
}
})