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) }