diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt index 2c1a8c9b225488126c9305a1b062b58f33f2fb44..be2fb61d73c1a43de3bef815c094cc362564f467 100644 --- a/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt @@ -2,6 +2,7 @@ package io.elixxir.xxclient.models import android.util.Log import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import io.elixxir.xxclient.utils.toBase64String interface BindingsModel { @@ -21,7 +22,8 @@ interface BindingsModel { inline fun <reified T> decode(data: ByteArray?): T? { return data?.run { if (isValidData()) { - Gson().fromJson(decodeToString(), T::class.java) + val typeToken = object : TypeToken<T>() {}.type + Gson().fromJson<T>(decodeToString(), typeToken) } else { Log.d("Decode", "Failed to decode data: ${decodeToString()}") null @@ -32,7 +34,8 @@ interface BindingsModel { inline fun <reified T> decodeArray(data: ByteArray?): List<T> { return data?.run { if (isValidData()) { - Gson().fromJson(decodeToString(), Array<T>::class.java).toList() + val typeToken = object : TypeToken<Array<T>>() {}.type + Gson().fromJson<Array<T>>(decodeToString(), typeToken).toList() } else listOf() } ?: listOf() }