From ff2bca68b400755daed460575dfb67d601e53967 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 29 Aug 2022 23:47:35 +0100
Subject: [PATCH] Handle missing round results in MessageDeliveryCallback

---
 .../Callbacks/MessageDeliveryCallback.swift     | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/Sources/XXClient/Callbacks/MessageDeliveryCallback.swift b/Sources/XXClient/Callbacks/MessageDeliveryCallback.swift
index 429a5bfe..4170f858 100644
--- a/Sources/XXClient/Callbacks/MessageDeliveryCallback.swift
+++ b/Sources/XXClient/Callbacks/MessageDeliveryCallback.swift
@@ -30,12 +30,15 @@ extension MessageDeliveryCallback {
       let callback: MessageDeliveryCallback
 
       func eventCallback(_ delivered: Bool, timedOut: Bool, roundResults: Data?) {
-        if delivered,
-           !timedOut,
-           let roundResultsData = roundResults,
-           let roundResults = try? JSONDecoder().decode([Int].self, from: roundResultsData)
-        {
-          callback.handle(.delivered(roundResults: roundResults))
+        if delivered && !timedOut {
+          let roundResultsArray: [Int]
+          if let data = roundResults,
+             let array = try? JSONDecoder().decode([Int].self, from: data) {
+            roundResultsArray = array
+          } else {
+            roundResultsArray = []
+          }
+          callback.handle(.delivered(roundResults: roundResultsArray))
           return
         }
 
@@ -48,7 +51,7 @@ extension MessageDeliveryCallback {
           BindingsMessageDeliveryCallback received invalid parameters:
           - delivered → \(delivered)
           - timedOut → \(timedOut)
-          - roundResults → \(roundResults.map { String(data: $0, encoding: .utf8) ?? "" } ?? "")
+          - roundResults → \(roundResults.map { String(data: $0, encoding: .utf8) ?? "\($0)" } ?? "nil")
           """)
       }
     }
-- 
GitLab