From d83acfea87e63d2f6ad5bbea1982642e55a933a2 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Mon, 8 Aug 2022 11:57:50 +0100 Subject: [PATCH] Add GroupRequest callback --- .../Callbacks/GroupRequest.swift | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Sources/ElixxirDAppsSDK/Callbacks/GroupRequest.swift diff --git a/Sources/ElixxirDAppsSDK/Callbacks/GroupRequest.swift b/Sources/ElixxirDAppsSDK/Callbacks/GroupRequest.swift new file mode 100644 index 00000000..a0591f36 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Callbacks/GroupRequest.swift @@ -0,0 +1,37 @@ +import Bindings +import XCTestDynamicOverlay + +public struct GroupRequest { + public init(handle: @escaping (Group) -> Void) { + self.handle = handle + } + + public var handle: (Group) -> Void +} + +extension GroupRequest { + public static let unimplemented = GroupRequest( + handle: XCTUnimplemented("\(Self.self)") + ) +} + +extension GroupRequest { + func makeBindingsGroupRequest() -> BindingsGroupRequestProtocol { + class CallbackObject: NSObject, BindingsGroupRequestProtocol { + init(_ callback: GroupRequest) { + self.callback = callback + } + + let callback: GroupRequest + + func callback(_ g: BindingsGroup?) { + guard let bindingsGroup = g else { + fatalError("BindingsGroupRequest.handle received `nil` group") + } + callback.handle(.live(bindingsGroup)) + } + } + + return CallbackObject(self) + } +} -- GitLab