diff --git a/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift b/Sources/ElixxirDAppsSDK/GroupChat/Functors/GroupChatMakeGroup.swift new file mode 100644 index 0000000000000000000000000000000000000000..04a57502665e567b8038cf07bb909f2596e2f34f --- /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 10f24edf28af41e468c5e0573a9cb12c01ac960e..ef3167cefba5f72b8dd7b4ea7da92762f2413394 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,