diff options
author | Ricki Hirner <hirner@bitfire.at> | 2021-12-20 17:40:01 +0300 |
---|---|---|
committer | Ricki Hirner <hirner@bitfire.at> | 2021-12-20 17:52:16 +0300 |
commit | 055da9b7a747517c154a928bcb2410099deb6f24 (patch) | |
tree | e56030c1d6fb5c200618c19985ec3fd54b71cfe4 | |
parent | 6ae4fdbdd946913e425ef6c1a5a030523022496c (diff) |
Always add FN also for vCard 4 (resolves bitfireAT/davx5#31); update dependencies
-rw-r--r-- | build.gradle | 13 | ||||
-rw-r--r-- | src/main/java/at/bitfire/vcard4android/ContactWriter.kt | 36 | ||||
-rw-r--r-- | src/test/java/at/bitfire/vcard4android/ContactWriterTest.kt | 11 |
3 files changed, 24 insertions, 36 deletions
diff --git a/build.gradle b/build.gradle index b4d8f8f..408f9d3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ buildscript { ext.versions = [ - kotlin: '1.6.0', - dokka: '1.5.0', + kotlin: '1.6.10', + dokka: '1.5.31', // latest Apache Commons versions that don't require Java 8 (Android 7) commonsIO: '2.6', commonsText: '1.3' @@ -62,15 +62,6 @@ android { defaultConfig { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - - // TODO currently doesn't work with dokka 1.5.0, but dokka 0.10.1 doesn't work with new gradle - /*dokka.configuration { - sourceLink { - remoteUrl.set(java.net.URL("https://gitlab.com/bitfireAT/vcard4android/tree/master/")) - remoteLineSuffix.set("#L") - } - jdkVersion = 7 - }*/ } dependencies { diff --git a/src/main/java/at/bitfire/vcard4android/ContactWriter.kt b/src/main/java/at/bitfire/vcard4android/ContactWriter.kt index aa967e6..99ae90d 100644 --- a/src/main/java/at/bitfire/vcard4android/ContactWriter.kt +++ b/src/main/java/at/bitfire/vcard4android/ContactWriter.kt @@ -116,26 +116,22 @@ class ContactWriter private constructor(val contact: Contact, val version: VCard } private fun addFormattedName() { - if (version == VCardVersion.V4_0) { - contact.displayName?.let { fn -> vCard.setFormattedName(fn) } - - } else /* version == VCardVersion.V3_0 */ { - // vCard 3 REQUIRES FN [RFC 2426 p. 29] - val fn = - // use display name, if available - StringUtils.trimToNull(contact.displayName) ?: - // no display name, try organization - contact.organization?.values?.joinToString(" / ") ?: - // otherwise, try nickname - contact.nickName?.property?.values?.firstOrNull() ?: - // otherwise, try email address - contact.emails.firstOrNull()?.property?.value ?: - // otherwise, try phone number - contact.phoneNumbers.firstOrNull()?.property?.text ?: - // otherwise, try UID or use empty string - contact.uid ?: "" - vCard.setFormattedName(fn) - } + // vCard 3 REQUIRES FN [RFC 2426 p. 29] + // vCard 4 REQUIRES FN [RFC 6350 6.2.1 FN] + val fn = + // use display name, if available + StringUtils.trimToNull(contact.displayName) ?: + // no display name, try organization + contact.organization?.values?.joinToString(" / ") ?: + // otherwise, try nickname + contact.nickName?.property?.values?.firstOrNull() ?: + // otherwise, try email address + contact.emails.firstOrNull()?.property?.value ?: + // otherwise, try phone number + contact.phoneNumbers.firstOrNull()?.property?.text ?: + // otherwise, try UID or use empty string + contact.uid ?: "" + vCard.setFormattedName(fn) } private fun addKindAndMembers() { diff --git a/src/test/java/at/bitfire/vcard4android/ContactWriterTest.kt b/src/test/java/at/bitfire/vcard4android/ContactWriterTest.kt index c242eb2..902e0d7 100644 --- a/src/test/java/at/bitfire/vcard4android/ContactWriterTest.kt +++ b/src/test/java/at/bitfire/vcard4android/ContactWriterTest.kt @@ -169,7 +169,7 @@ class ContactWriterTest { @Test fun testFn_vCard4_NoFn() { val vCard = generate(version = VCardVersion.V4_0) { } - assertNull(vCard.formattedName) + assertEquals("", vCard.formattedName.value) } @Test @@ -432,7 +432,7 @@ class ContactWriterTest { values.add("nick1") }) } - assertEquals(2 /* NICK + REV */, vCard.properties.size) + assertEquals(3 /* NICK + REV + FN */, vCard.properties.size) assertEquals("nick1", vCard.nickname.values.first()) } @@ -443,7 +443,7 @@ class ContactWriterTest { values.add("nick1") }, "label1") } - assertEquals(3 /* NICK + X-ABLABEL + REV */, vCard.properties.size) + assertEquals(4 /* NICK + X-ABLABEL + FN + REV */, vCard.properties.size) vCard.nickname.apply { assertEquals("nick1", values.first()) assertEquals("item1", group) @@ -464,7 +464,7 @@ class ContactWriterTest { values.add("nick1") }, "label1") } - assertEquals(4 /* X-TEST + NICK + X-ABLABEL + REV */, vCard.properties.size) + assertEquals(5 /* X-TEST + NICK + X-ABLABEL + FN + REV */, vCard.properties.size) vCard.nickname.apply { assertEquals("nick1", values.first()) assertEquals("item2", group) @@ -546,7 +546,7 @@ class ContactWriterTest { val stream = ByteArrayOutputStream() generator.writeCard(stream, true) - assertEquals("[\"vcard\",[[\"version\",{},\"text\",\"4.0\"],[\"prodid\",{},\"text\",\"ez-vcard 0.11.3\"],[\"rev\",{},\"timestamp\",\"2021-07-30T01:02:03Z\"]]]", stream.toString()) + assertEquals("[\"vcard\",[[\"version\",{},\"text\",\"4.0\"],[\"prodid\",{},\"text\",\"ez-vcard 0.11.3\"],[\"fn\",{},\"text\",\"\"],[\"rev\",{},\"timestamp\",\"2021-07-30T01:02:03Z\"]]]", stream.toString()) } @@ -562,6 +562,7 @@ class ContactWriterTest { assertEquals("BEGIN:VCARD\r\n" + "VERSION:4.0\r\n" + "PRODID:ez-vcard 0.11.3\r\n" + + "FN:\r\n" + "REV:20210730T010203Z\r\n" + "END:VCARD\r\n", stream.toString()) } |