From 36add724cfd2d50f5c32b8c1592133bd0f84275a Mon Sep 17 00:00:00 2001 From: Vincent Date: Tue, 19 Jul 2022 18:07:08 +1200 Subject: [PATCH 1/2] Added missing async init for SubsciptionField - Added the missing async init for SubscriptionField.init(_:as:atSub:) --- .../Subscription/SubscribeField.swift | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Sources/Graphiti/Subscription/SubscribeField.swift b/Sources/Graphiti/Subscription/SubscribeField.swift index 5c6fe86..e1770eb 100644 --- a/Sources/Graphiti/Subscription/SubscribeField.swift +++ b/Sources/Graphiti/Subscription/SubscribeField.swift @@ -431,6 +431,28 @@ public extension SubscriptionField where FieldType : Encodable { ) { self.init(name: name, arguments: arguments(), concurrentResolve: function, concurrentSubscribe: subFunc) } + + @available(macOS 12, iOS 15, watchOS 8, tvOS 15, *) + convenience init( + _ name: String, + as: FieldType.Type, + atSub subFunc: @escaping ConcurrentResolve>, + @ArgumentComponentBuilder _ arguments: () -> ArgumentComponent + ) { + + self.init(name: name, arguments: [arguments()], as: `as`, concurrentSubscribe: subFunc) + } + + @available(macOS 12, iOS 15, watchOS 8, tvOS 15, *) + convenience init( + _ name: String, + as: FieldType.Type, + atSub subFunc: @escaping ConcurrentResolve>, + @ArgumentComponentBuilder _ arguments: () -> [ArgumentComponent] = {[]} + ) { + + self.init(name: name, arguments: arguments(), as: `as`, concurrentSubscribe: subFunc) + } } public extension SubscriptionField { @@ -455,6 +477,7 @@ public extension SubscriptionField { ) { self.init(name: name, arguments: arguments(), concurrentResolve: function, concurrentSubscribe: subFunc) } + } #endif From 3a6495e900f58d166cc78d0d84e8c2c585f75f1f Mon Sep 17 00:00:00 2001 From: Vincent Date: Tue, 19 Jul 2022 18:10:47 +1200 Subject: [PATCH 2/2] Fixed HelloWorldAsyncTest to use async subscription --- .../HelloWorldTests/HelloWorldAsyncTests.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Tests/GraphitiTests/HelloWorldTests/HelloWorldAsyncTests.swift b/Tests/GraphitiTests/HelloWorldTests/HelloWorldAsyncTests.swift index 175e28f..1e8199b 100644 --- a/Tests/GraphitiTests/HelloWorldTests/HelloWorldAsyncTests.swift +++ b/Tests/GraphitiTests/HelloWorldTests/HelloWorldAsyncTests.swift @@ -37,10 +37,12 @@ extension HelloResolver { @available(macOS 12, iOS 15, watchOS 8, tvOS 15, *) // Same as the HelloAPI, except with an async query and a few subscription fields struct HelloAsyncAPI : API { - let resolver = HelloResolver() - let context = HelloContext() + typealias ContextType = HelloContext + + let resolver: HelloResolver = HelloResolver() + let context: HelloContext = HelloContext() - let schema = try! Schema { + let schema: Schema = try! Schema { Scalar(Float.self) .description("The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point).") @@ -91,7 +93,7 @@ struct HelloAsyncAPI : API { SubscriptionField("subscribeUserEvent", at: User.toEvent, atSub: HelloResolver.subscribeUser) SubscriptionField("futureSubscribeUser", as: User.self, atSub: HelloResolver.subscribeUser) - SubscriptionField("asyncSubscribeUser", as: User.self, atSub: HelloResolver.subscribeUser) + SubscriptionField("asyncSubscribeUser", as: User.self, atSub: HelloResolver.asyncSubscribeUser) } } }