From 3c5fa1ce33e9639343a1718ddba2ffaab9c24f28 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Tue, 13 Sep 2022 09:40:33 +0200 Subject: [PATCH] Update GroupChatProcessor callback --- .../Callbacks/GroupChatProcessor.swift | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/Sources/XXClient/Callbacks/GroupChatProcessor.swift b/Sources/XXClient/Callbacks/GroupChatProcessor.swift index b5edc9cb..e6ab9ee4 100644 --- a/Sources/XXClient/Callbacks/GroupChatProcessor.swift +++ b/Sources/XXClient/Callbacks/GroupChatProcessor.swift @@ -4,7 +4,7 @@ import XCTestDynamicOverlay public struct GroupChatProcessor { public struct Callback: Equatable { public init( - decryptedMessage: Result<Data, NSError>, + decryptedMessage: GroupChatMessage, msg: Data, receptionId: Data, ephemeralId: Int64, @@ -17,7 +17,7 @@ public struct GroupChatProcessor { self.roundId = roundId } - public var decryptedMessage: Result<Data, NSError> + public var decryptedMessage: GroupChatMessage public var msg: Data public var receptionId: Data public var ephemeralId: Int64 @@ -26,14 +26,14 @@ public struct GroupChatProcessor { public init( name: String = "GroupChatProcessor", - handle: @escaping (Callback) -> Void + handle: @escaping (Result<Callback, NSError>) -> Void ) { self.name = name self.handle = handle } public var name: String - public var handle: (Callback) -> Void + public var handle: (Result<Callback, NSError>) -> Void } extension GroupChatProcessor { @@ -60,27 +60,30 @@ extension GroupChatProcessor { roundId: Int64, err: Error? ) { + if let err = err { + callback.handle(.failure(err as NSError)) + return + } + guard let decryptedMessage = decryptedMessage else { + fatalError("BindingsGroupChatProcessor received `nil` decryptedMessage") + } guard let msg = msg else { fatalError("BindingsGroupChatProcessor received `nil` msg") } guard let receptionId = receptionId else { fatalError("BindingsGroupChatProcessor received `nil` receptionId") } - let decryptedMessageResult: Result<Data, NSError> - if let err = err { - decryptedMessageResult = .failure(err as NSError) - } else if let decryptedMessage = decryptedMessage { - decryptedMessageResult = .success(decryptedMessage) - } else { - fatalError("BindingsGroupChatProcessor received `nil` decryptedMessage and `nil` error") + do { + callback.handle(.success(.init( + decryptedMessage: try GroupChatMessage.decode(decryptedMessage), + msg: msg, + receptionId: receptionId, + ephemeralId: ephemeralId, + roundId: roundId + ))) + } catch { + callback.handle(.failure(error as NSError)) } - callback.handle(.init( - decryptedMessage: decryptedMessageResult, - msg: msg, - receptionId: receptionId, - ephemeralId: ephemeralId, - roundId: roundId - )) } func string() -> String { -- GitLab