From 87f3440f78166c450cd14150a254dcccabd1948e Mon Sep 17 00:00:00 2001
From: Kamal Bramwell <kamal@elixxir.io>
Date: Tue, 25 Oct 2022 13:24:30 -0400
Subject: [PATCH] Check for empty data before deserializing

---
 .../io/elixxir/xxclient/models/BindingsModel.kt | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 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 8b3c62f..509e505 100644
--- a/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt
+++ b/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt
@@ -1,7 +1,9 @@
 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 {
 
@@ -16,13 +18,20 @@ interface BindingsModel {
         }
 
         inline fun <reified T> decode(data: ByteArray): T {
-            val typeToken = object : TypeToken<T>() {}.type
-            return Gson().fromJson(data.decodeToString(), typeToken)
+            return if (data.isNotEmpty()) {
+                val typeToken = object : TypeToken<T>() {}.type
+                Gson().fromJson(data.decodeToString(), typeToken)
+            } else {
+                Log.d("Decode", "Failed to decode data: ${data.decodeToString()}")
+                throw InvalidDataException()
+            }
         }
 
         inline fun <reified T> decodeArray(data: ByteArray): List<T> {
-            val typeToken = object : TypeToken<Array<T>>() {}.type
-            return Gson().fromJson<Array<T>>(data.decodeToString(), typeToken).toList()
+            return if (data.isNotEmpty()) {
+                val typeToken = object : TypeToken<Array<T>>() {}.type
+                Gson().fromJson<Array<T>>(data.decodeToString(), typeToken).toList()
+            } else listOf()
         }
     }
 }
\ No newline at end of file
-- 
GitLab