From 8dc4687328e58b9833738fc8c3bd6c2227d87175 Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 31 Aug 2022 17:34:51 +0530 Subject: [PATCH 1/3] Use structured name when formatted name is empty --- .../smsmessenger/adapters/ThreadAdapter.kt | 2 +- .../smsmessenger/helpers/VCardParser.kt | 16 ++++++++++++++++ .../smsmessenger/models/VCard.kt | 17 ++--------------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index baddb3ae..935336eb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -367,7 +367,7 @@ class ThreadAdapter( thread_mesage_attachments_holder.addView(vCardView) parseVCardFromUri(context, uri) { vCards -> - val title = vCards.firstOrNull()?.formattedName?.value + val title = vCards.firstOrNull()?.parseNameFromVCard() val imageIcon = if (title != null) { SimpleContactsHelper(context).getContactLetterIcon(title) } else { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt index e01217bf..91299e9e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt @@ -13,3 +13,19 @@ fun parseVCardFromUri(context: Context, uri: Uri, callback: (vCards: List callback(vCards) } } + +fun VCard?.parseNameFromVCard(): String? { + if (this == null) return null + var fullName = formattedName?.value + if (fullName.isNullOrEmpty()) { + val structured = structuredName + val given = structured?.given + val family = structured.family + fullName = if (family != null) { + given?.plus(" ")?.plus(family) + } else { + given + } + } + return fullName +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt index c1869500..56f252b6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt @@ -5,6 +5,7 @@ import com.simplemobiletools.commons.extensions.normalizePhoneNumber import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.extensions.config import com.simplemobiletools.smsmessenger.extensions.format +import com.simplemobiletools.smsmessenger.helpers.parseNameFromVCard import ezvcard.VCard import ezvcard.property.* @@ -15,27 +16,13 @@ private val displayedPropertyClasses = arrayOf( data class VCardWrapper(val vCard: VCard, val fullName: String?, val properties: List, var expanded: Boolean = false) { companion object { - private fun VCard.extractFullName(): String? { - var fullName = formattedName?.value - if (fullName.isNullOrEmpty()) { - val structured = structuredName - val given = structured?.given - val family = structured.family - fullName = if (family != null) { - given?.plus(" ")?.plus(family) - } else { - given - } - } - return fullName - } fun from(context: Context, vCard: VCard): VCardWrapper { val properties = vCard.properties .filter { displayedPropertyClasses.contains(it::class.java) } .map { VCardPropertyWrapper.from(context, it) } .distinctBy { it.value } - val fullName = vCard.extractFullName() + val fullName = vCard.parseNameFromVCard() return VCardWrapper(vCard, fullName, properties) } From 6a0553bf5f1e88d3e6ba35023c37c33badd48cd0 Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 31 Aug 2022 23:57:01 +0530 Subject: [PATCH 2/3] Also add name prefix and suffix --- .../smsmessenger/helpers/VCardParser.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt index 91299e9e..ffab98e8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt @@ -18,14 +18,14 @@ fun VCard?.parseNameFromVCard(): String? { if (this == null) return null var fullName = formattedName?.value if (fullName.isNullOrEmpty()) { - val structured = structuredName - val given = structured?.given - val family = structured.family - fullName = if (family != null) { - given?.plus(" ")?.plus(family) - } else { - given + val structured = structuredName ?: return null + val nameComponents = arrayListOf().apply { + addAll(structured.prefixes) + add(structured.given) + add(structured.family) + addAll(structured.suffixes) } + fullName = nameComponents.filter { !it.isNullOrEmpty() }.joinToString(separator = " ") } return fullName } From 56ec2c5442931d7f74be3ba43ac99e9339f4ee4f Mon Sep 17 00:00:00 2001 From: Naveen Date: Thu, 1 Sep 2022 00:11:07 +0530 Subject: [PATCH 3/3] Also add additional (middle) names --- .../com/simplemobiletools/smsmessenger/helpers/VCardParser.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt index ffab98e8..3456c080 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt @@ -22,6 +22,7 @@ fun VCard?.parseNameFromVCard(): String? { val nameComponents = arrayListOf().apply { addAll(structured.prefixes) add(structured.given) + addAll(structured.additionalNames) add(structured.family) addAll(structured.suffixes) }