From 581c1b0dd442e2b356ebb81937d3c0ef2b2c2ee1 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Tue, 1 Nov 2022 21:54:52 +0100
Subject: [PATCH] Update FileTransferProgressCallback

---
 .../FileTransferProgressCallback.swift        | 32 ++++++++++---------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/Sources/XXClient/Callbacks/FileTransferProgressCallback.swift b/Sources/XXClient/Callbacks/FileTransferProgressCallback.swift
index 9c77d7af..615a715a 100644
--- a/Sources/XXClient/Callbacks/FileTransferProgressCallback.swift
+++ b/Sources/XXClient/Callbacks/FileTransferProgressCallback.swift
@@ -5,21 +5,24 @@ public struct FileTransferProgressCallback {
   public struct Callback {
     public init(
       progress: Progress,
-      partTracker: FilePartTracker
+      partTracker: FilePartTracker,
+      error: Error?
     ) {
       self.progress = progress
       self.partTracker = partTracker
+      self.error = error
     }
 
     public var progress: Progress
     public var partTracker: FilePartTracker
+    public var error: Error?
   }
 
-  public init(handle: @escaping (Result<Callback, NSError>) -> Void) {
+  public init(handle: @escaping (Callback) -> Void) {
     self.handle = handle
   }
 
-  public var handle: (Result<Callback, NSError>) -> Void
+  public var handle: (Callback) -> Void
 }
 
 extension FileTransferProgressCallback {
@@ -51,24 +54,23 @@ extension FileTransferProgressCallback {
       let debugName: String
 
       func callback(_ payload: Data?, t: BindingsFilePartTracker?, err: Error?) {
-        if let error = err {
-          callback.handle(.failure(error as NSError))
-          return
-        }
         guard let payload = payload else {
           fatalError("\(debugName) received `nil` payload without providing error")
         }
-        guard let tracker = t else {
-          fatalError("\(debugName) received `nil` tracker without providing error")
-        }
+        let progress: Progress
         do {
-          callback.handle(.success(.init(
-            progress: try Progress.decode(payload),
-            partTracker: .live(tracker)
-          )))
+          progress = try Progress.decode(payload)
         } catch {
-          callback.handle(.failure(error as NSError))
+          fatalError("\(debugName) payload decoding failed with error: \(error)")
+        }
+        guard let tracker = t else {
+          fatalError("\(debugName) received `nil` tracker without providing error")
         }
+        callback.handle(.init(
+          progress: progress,
+          partTracker: .live(tracker),
+          error: err
+        ))
       }
     }
 
-- 
GitLab