diff --git a/commons/src/main/kotlin/org/fossify/commons/helpers/Converters.kt b/commons/src/main/kotlin/org/fossify/commons/helpers/Converters.kt index 735b49b13..daf7e4a42 100644 --- a/commons/src/main/kotlin/org/fossify/commons/helpers/Converters.kt +++ b/commons/src/main/kotlin/org/fossify/commons/helpers/Converters.kt @@ -4,7 +4,11 @@ import androidx.room.TypeConverter import com.google.gson.Gson import com.google.gson.reflect.TypeToken import org.fossify.commons.models.PhoneNumber -import org.fossify.commons.models.contacts.* +import org.fossify.commons.models.contacts.Address +import org.fossify.commons.models.contacts.Email +import org.fossify.commons.models.contacts.Event +import org.fossify.commons.models.contacts.IM +import org.fossify.commons.models.contacts.PhoneNumberConverter class Converters { private val gson = Gson() @@ -36,9 +40,11 @@ class Converters { val numbers = gson.fromJson>(value, numberType) return if (numbers.any { it.value == null }) { val phoneNumbers = ArrayList() - val numberConverters = gson.fromJson>(value, numberConverterType) + val numberConverters = + gson.fromJson>(value, numberConverterType) numberConverters.forEach { converter -> - val phoneNumber = PhoneNumber(converter.a, converter.b, converter.c, converter.d, converter.e) + val phoneNumber = + PhoneNumber(converter.a, converter.b, converter.c, converter.d, converter.e) phoneNumbers.add(phoneNumber) } phoneNumbers @@ -57,7 +63,25 @@ class Converters { fun emailListToJson(list: ArrayList): String = gson.toJson(list) @TypeConverter - fun jsonToAddressList(value: String): ArrayList
= gson.fromJson(value, addressType) + fun jsonToAddressList(value: String): ArrayList
{ + val addresses = gson.fromJson>(value, addressType) + // This is a workaround for https://github.com/FossifyOrg/Contacts/issues/281 + return addresses.map { + @Suppress("USELESS_ELVIS") + it.copy( + value = it.value, + type = it.type, + label = it.label, + country = it.country ?: "", + region = it.region ?: "", + city = it.city ?: "", + postcode = it.postcode ?: "", + pobox = it.pobox ?: "", + street = it.street ?: "", + neighborhood = it.neighborhood ?: "" + ) + }.toMutableList() as ArrayList
+ } @TypeConverter fun addressListToJson(list: ArrayList
): String = gson.toJson(list) diff --git a/commons/src/main/kotlin/org/fossify/commons/models/contacts/Address.kt b/commons/src/main/kotlin/org/fossify/commons/models/contacts/Address.kt index e34a39db8..87f8fa9a5 100644 --- a/commons/src/main/kotlin/org/fossify/commons/models/contacts/Address.kt +++ b/commons/src/main/kotlin/org/fossify/commons/models/contacts/Address.kt @@ -7,11 +7,11 @@ data class Address( var value: String, var type: Int, var label: String, - var country: String, - var region: String, - var city: String, - var postcode: String, - var pobox: String, - var street: String, - var neighborhood: String, + var country: String = "", + var region: String = "", + var city: String = "", + var postcode: String = "", + var pobox: String = "", + var street: String = "", + var neighborhood: String = "", )