Skip to content

Commit

Permalink
Improved null-handling
Browse files Browse the repository at this point in the history
Signed-off-by: Arnau Mora <arnyminerz@proton.me>
  • Loading branch information
ArnyminerZ committed Jul 5, 2024
1 parent 20a24d7 commit 7e1675a
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 17 deletions.
22 changes: 11 additions & 11 deletions lib/src/main/java/at/bitfire/vcard4android/ContactReader.kt
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ class ContactReader internal constructor(val vCard: VCard, val downloader: Conta
uriString
}

return uid.trim().takeIf { it.isNotBlank() }
return uid?.trim()?.takeIf { it.isNotBlank() }
}

}
Expand All @@ -130,20 +130,20 @@ class ContactReader internal constructor(val vCard: VCard, val downloader: Conta
uriToUid(prop.uri)?.let { c.members += it }

is FormattedName ->
c.displayName = prop.value.trim().takeIf { it.isNotBlank() }
c.displayName = prop.value?.trim()?.takeIf { it.isNotBlank() }
is StructuredName -> {
c.prefix = prop.prefixes.joinToString(" ").trim().takeIf { it.isNotBlank() }
c.givenName = prop.given.trim().takeIf { it.isNotBlank() }
c.givenName = prop.given?.trim()?.takeIf { it.isNotBlank() }
c.middleName = prop.additionalNames.joinToString(" ").trim().takeIf { it.isNotBlank() }
c.familyName = prop.family.trim().takeIf { it.isNotBlank() }
c.familyName = prop.family?.trim()?.takeIf { it.isNotBlank() }
c.suffix = prop.suffixes.joinToString(" ").trim().takeIf { it.isNotBlank() }
}
is XPhoneticFirstName ->
c.phoneticGivenName = prop.value.trim().takeIf { it.isNotBlank() }
c.phoneticGivenName = prop.value?.trim()?.takeIf { it.isNotBlank() }
is XPhoneticMiddleName ->
c.phoneticMiddleName = prop.value.trim().takeIf { it.isNotBlank() }
c.phoneticMiddleName = prop.value?.trim()?.takeIf { it.isNotBlank() }
is XPhoneticLastName ->
c.phoneticFamilyName = prop.value.trim().takeIf { it.isNotBlank() }
c.phoneticFamilyName = prop.value?.trim()?.takeIf { it.isNotBlank() }
is Nickname ->
c.nickName = LabeledProperty(prop, findAndRemoveLabel(prop.group))

Expand All @@ -153,9 +153,9 @@ class ContactReader internal constructor(val vCard: VCard, val downloader: Conta
is Organization ->
c.organization = prop
is Title ->
c.jobTitle = prop.value.trim().takeIf { it.isNotBlank() }
c.jobTitle = prop.value?.trim()?.takeIf { it.isNotBlank() }
is Role ->
c.jobDescription = prop.value.trim().takeIf { it.isNotBlank() }
c.jobDescription = prop.value?.trim()?.takeIf { it.isNotBlank() }

is Telephone ->
if (!prop.text.isNullOrBlank())
Expand Down Expand Up @@ -251,7 +251,7 @@ class ContactReader internal constructor(val vCard: VCard, val downloader: Conta
}

is Note -> {
prop.value.trim().takeIf { it.isNotBlank() }?.let { note ->
prop.value?.trim()?.takeIf { it.isNotBlank() }?.let { note ->
if (c.note == null)
c.note = note
else
Expand Down Expand Up @@ -323,7 +323,7 @@ class ContactReader internal constructor(val vCard: VCard, val downloader: Conta
for (label in vCard.getProperties(XAbLabel::class.java)) {
if (label.group.equals(group, true)) {
vCard.removeProperty(label)
return label.value.trim().takeIf { it.isNotBlank() }
return label.value?.trim()?.takeIf { it.isNotBlank() }
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ object EventHandler: DataRowHandler() {
Event.TYPE_CUSTOM */
else -> {
val abDate = if (full != null) XAbDate(full) else XAbDate(partial)
val label = values.getAsString(Event.LABEL).trim().takeIf { it.isNotBlank() }
val label = values.getAsString(Event.LABEL)?.trim()?.takeIf { it.isNotBlank() }
contact.customDates += LabeledProperty(abDate, label)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class OrganizationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact
val depts = LinkedList<String>()
while (org.hasNext())
depts += org.next()
department = depts.joinToString(" / ").trim().takeIf { it.isNotBlank() }
department = depts.joinToString(" / ").trim().takeIf { t -> t.isNotBlank() }
}

if (company == null && department == null && contact.jobTitle == null && contact.jobDescription == null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class RelationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, re
override fun build(): List<BatchOperation.CpoBuilder> {
val result = LinkedList<BatchOperation.CpoBuilder>()
for (related in contact.relations) {
val name = related.text.trim().takeIf { it.isNotBlank() } ?: related.uri.trim().takeIf { it.isNotBlank() }
val name = related.text?.trim()?.takeIf { it.isNotBlank() } ?: related.uri?.trim()?.takeIf { it.isNotBlank() }
if (name.isNullOrBlank())
continue

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ class StructuredPostalBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Con
lines += extended

val postalAndCity = LinkedList<String>()
if (address.postalCode.trim().takeIf { it.isNotBlank() } != null)
if (address.postalCode?.trim()?.takeIf { it.isNotBlank() } != null)
postalAndCity += address.postalCodes.joinToString(" / ")
if (address.locality.trim().takeIf { it.isNotBlank() } != null)
if (address.locality?.trim()?.takeIf { it.isNotBlank() } != null)
postalAndCity += address.localities.joinToString(" / ")
if (postalAndCity.isNotEmpty())
lines += postalAndCity.joinToString(" ")

if (address.country.trim().takeIf { it.isNotBlank() } != null) {
if (address.country?.trim()?.takeIf { it.isNotBlank() } != null) {
val line = StringBuilder(address.countries.joinToString(" / "))
if (!address.region.isNullOrBlank()) {
val regions = address.regions.joinToString(" / ")
Expand Down

0 comments on commit 7e1675a

Please sign in to comment.