Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -36,9 +40,11 @@ class Converters {
val numbers = gson.fromJson<ArrayList<PhoneNumber>>(value, numberType)
return if (numbers.any { it.value == null }) {
val phoneNumbers = ArrayList<PhoneNumber>()
val numberConverters = gson.fromJson<ArrayList<PhoneNumberConverter>>(value, numberConverterType)
val numberConverters =
gson.fromJson<ArrayList<PhoneNumberConverter>>(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
Expand All @@ -57,7 +63,25 @@ class Converters {
fun emailListToJson(list: ArrayList<Email>): String = gson.toJson(list)

@TypeConverter
fun jsonToAddressList(value: String): ArrayList<Address> = gson.fromJson(value, addressType)
fun jsonToAddressList(value: String): ArrayList<Address> {
val addresses = gson.fromJson<ArrayList<Address>>(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<Address>
}

@TypeConverter
fun addressListToJson(list: ArrayList<Address>): String = gson.toJson(list)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "",
)
Loading