From 2675084518f4c2302a47902b83d9681208976371 Mon Sep 17 00:00:00 2001
From: Kamal Bramwell <kamal@elixxir.io>
Date: Wed, 16 Nov 2022 20:04:36 -0500
Subject: [PATCH] Added TypeTokens to Gson decoding

---
 .../io/elixxir/xxclient/models/BindingsModel.kt | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

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 be2fb61..7ae2b94 100644
--- a/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt
+++ b/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt
@@ -16,14 +16,19 @@ interface BindingsModel {
             val data = list.map {
                 (it as? ByteArray)?.toBase64String() ?: it
             }
-            return Gson().toJson(data.toTypedArray(), Array<T>::class.java).encodeToByteArray()
+            return Gson().toJson(
+                data.toTypedArray(),
+                object : TypeToken<Array<T>>() {}.type
+            ).encodeToByteArray()
         }
 
         inline fun <reified T> decode(data: ByteArray?): T? {
             return data?.run {
                 if (isValidData()) {
-                    val typeToken = object : TypeToken<T>() {}.type
-                    Gson().fromJson<T>(decodeToString(), typeToken)
+                    Gson().fromJson<T>(
+                        decodeToString(),
+                        object : TypeToken<T>() {}.type
+                    )
                 } else {
                     Log.d("Decode", "Failed to decode data: ${decodeToString()}")
                     null
@@ -34,8 +39,10 @@ interface BindingsModel {
         inline fun <reified T> decodeArray(data: ByteArray?): List<T> {
             return data?.run {
                 if (isValidData()) {
-                    val typeToken = object : TypeToken<Array<T>>() {}.type
-                    Gson().fromJson<Array<T>>(decodeToString(), typeToken).toList()
+                    Gson().fromJson<Array<T>>(
+                        decodeToString(),
+                        object : TypeToken<Array<T>>() {}.type
+                    ).toList()
                 } else listOf()
             } ?: listOf()
         }
-- 
GitLab