From 8c7cb6838112fda1f60ec1db7da3e4ceddc198ed Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 11 Sep 2023 19:39:42 -0400 Subject: [PATCH] Replace dispatch group with async continuation to fix XPC connection interrupt --- templates/swift/Sources/Services/Service.swift.twig | 4 ++-- templates/swift/base/requests/{OAuth.twig => oauth.twig} | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) rename templates/swift/base/requests/{OAuth.twig => oauth.twig} (53%) diff --git a/templates/swift/Sources/Services/Service.swift.twig b/templates/swift/Sources/Services/Service.swift.twig index 8ec922d6f..aad435162 100644 --- a/templates/swift/Sources/Services/Service.swift.twig +++ b/templates/swift/Sources/Services/Service.swift.twig @@ -35,10 +35,10 @@ open class {{ service.name | caseUcfirst }}: Service { {%~ if 'multipart/form-data' in method.consumes %} onProgress: ((UploadProgress) -> Void)? = nil {%~ endif %} - ){%~ if method.type != "webAuth" %} async{% endif %} throws -> {{ method | returnType(spec) | raw }} { + ) async throws -> {{ method | returnType(spec) | raw }} { {{~ include('swift/base/params.twig') }} {%~ if method.type == 'webAuth' %} - {{~ include('swift/base/requests/OAuth.twig') }} + {{~ include('swift/base/requests/oauth.twig') }} {%~ elseif method.type == 'location' %} {{~ include('swift/base/requests/location.twig')}} {%~ else %} diff --git a/templates/swift/base/requests/OAuth.twig b/templates/swift/base/requests/oauth.twig similarity index 53% rename from templates/swift/base/requests/OAuth.twig rename to templates/swift/base/requests/oauth.twig index 4caee56fd..02174947a 100644 --- a/templates/swift/base/requests/OAuth.twig +++ b/templates/swift/base/requests/oauth.twig @@ -1,12 +1,11 @@ let query = "?\(client.parametersToQueryString(params: apiParams))" let url = URL(string: client.endPoint + apiPath + query)! let callbackScheme = "appwrite-callback-\(client.config["project"] ?? "")" - let group = DispatchGroup() - group.enter() - WebAuthComponent.authenticate(url: url, callbackScheme: callbackScheme) { result in - group.leave() + try await withCheckedThrowingContinuation { continuation in + WebAuthComponent.authenticate(url: url, callbackScheme: callbackScheme) { result in + continuation.resume(with: result) + } } - group.wait() return true