From c43ec974ce5ee24cc1bd4f3b7405e3e6b6862c6f Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Tue, 9 Aug 2022 19:06:15 +0100 Subject: [PATCH] Add GroupChatMakeGroup functor --- .../Functors/GroupChatMakeGroup.swift | 33 +++++++++++++++++++ .../ElixxirDAppsSDK/GroupChat/GroupChat.swift | 3 ++ 2 files changed, 36 insertions(+) create mode 100644 Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift diff --git a/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift b/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift new file mode 100644 index 00000000..04a57502 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift @@ -0,0 +1,33 @@ +import Bindings +import XCTestDynamicOverlay + +public struct GroupChatMakeGroup { + public var run: ([Data], Data?, Data?) throws -> GroupReport + + public func callAsFunction( + membership: [Data], + message: Data?, + name: Data? + ) throws -> GroupReport { + try run(membership, message, name) + } +} + +extension GroupChatMakeGroup { + public static func live(_ bindingsGroupChat: BindingsGroupChat) -> GroupChatMakeGroup { + GroupChatMakeGroup { membership, message, name in + let reportData = try bindingsGroupChat.makeGroup( + try JSONEncoder().encode(membership), + message: message, + name: name + ) + return try GroupReport.decode(reportData) + } + } +} + +extension GroupChatMakeGroup { + public static let unimplemented = GroupChatMakeGroup( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift b/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift index 10f24edf..ef3167ce 100644 --- a/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift +++ b/Sources/ElixxirDAppsSDK/GroupChat/GroupChat.swift @@ -3,6 +3,7 @@ import Bindings public struct GroupChat { public var getGroup: GroupChatGetGroup public var getGroups: GroupChatGetGroups + public var makeGroup: GroupChatMakeGroup public var joinGroup: GroupChatJoinGroup public var leaveGroup: GroupChatLeaveGroup public var numGroups: GroupChatNumGroups @@ -15,6 +16,7 @@ extension GroupChat { GroupChat( getGroup: .live(bindingsGroupChat), getGroups: .live(bindingsGroupChat), + makeGroup: .live(bindingsGroupChat), joinGroup: .live(bindingsGroupChat), leaveGroup: .live(bindingsGroupChat), numGroups: .live(bindingsGroupChat), @@ -28,6 +30,7 @@ extension GroupChat { public static let unimplemented = GroupChat( getGroup: .unimplemented, getGroups: .unimplemented, + makeGroup: .unimplemented, joinGroup: .unimplemented, leaveGroup: .unimplemented, numGroups: .unimplemented, -- GitLab