Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bitfireAT/vcard4android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicki Hirner <hirner@bitfire.at>2021-12-20 17:40:01 +0300
committerRicki Hirner <hirner@bitfire.at>2021-12-20 17:52:16 +0300
commit055da9b7a747517c154a928bcb2410099deb6f24 (patch)
treee56030c1d6fb5c200618c19985ec3fd54b71cfe4
parent6ae4fdbdd946913e425ef6c1a5a030523022496c (diff)
Always add FN also for vCard 4 (resolves bitfireAT/davx5#31); update dependencies
-rw-r--r--build.gradle13
-rw-r--r--src/main/java/at/bitfire/vcard4android/ContactWriter.kt36
-rw-r--r--src/test/java/at/bitfire/vcard4android/ContactWriterTest.kt11
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())
}