package com.simplemobiletools.smsmessenger.helpers import android.content.Context import android.net.Uri import com.simplemobiletools.commons.helpers.ensureBackgroundThread import ezvcard.Ezvcard import ezvcard.VCard fun parseVCardFromUri(context: Context, uri: Uri, callback: (vCards: List) -> Unit) { ensureBackgroundThread { val inputStream = try { context.contentResolver.openInputStream(uri) } catch (e: Exception) { callback(emptyList()) return@ensureBackgroundThread } val vCards = Ezvcard.parse(inputStream).all() callback(vCards) } } fun VCard?.parseNameFromVCard(): String? { if (this == null) return null var fullName = formattedName?.value if (fullName.isNullOrEmpty()) { val structured = structuredName ?: return null val nameComponents = arrayListOf().apply { addAll(structured.prefixes) add(structured.given) addAll(structured.additionalNames) add(structured.family) addAll(structured.suffixes) } fullName = nameComponents.filter { !it.isNullOrEmpty() }.joinToString(separator = " ") } return fullName }