From e0e46a0a806ca6b694c68efef1734a6156d8fcd8 Mon Sep 17 00:00:00 2001
From: Kamal Bramwell <kamal@elixxir.io>
Date: Wed, 16 Nov 2022 19:54:18 -0500
Subject: [PATCH] Revert "Use class instance instead of TypeToken for Gson
 decoding"

This reverts commit 48b19f7f64c19032edf5bd07168ea1eedce3eba4.
---
 .../main/java/io/elixxir/xxclient/models/BindingsModel.kt  | 7 +++++--
 1 file changed, 5 insertions(+), 2 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 2c1a8c9..be2fb61 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()
         }
-- 
GitLab