From ff410381fe6a27e9542286944c16980f34e2cdf7 Mon Sep 17 00:00:00 2001 From: Andrea Bizzotto Date: Thu, 18 May 2017 11:50:28 +0100 Subject: [PATCH] Dispatch callback on main queue when retrieving products info and refreshing the receipt (#211) --- SwiftyStoreKit/InAppProductQueryRequest.swift | 10 ++++++++-- SwiftyStoreKit/InAppReceiptRefreshRequest.swift | 10 +++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/SwiftyStoreKit/InAppProductQueryRequest.swift b/SwiftyStoreKit/InAppProductQueryRequest.swift index 5f4dba33..0a8ae22a 100644 --- a/SwiftyStoreKit/InAppProductQueryRequest.swift +++ b/SwiftyStoreKit/InAppProductQueryRequest.swift @@ -59,7 +59,7 @@ class InAppProductQueryRequest: NSObject, SKProductsRequestDelegate { let retrievedProducts = Set(response.products) let invalidProductIDs = Set(response.invalidProductIdentifiers) - callback(RetrieveResults(retrievedProducts: retrievedProducts, + performCallback(RetrieveResults(retrievedProducts: retrievedProducts, invalidProductIDs: invalidProductIDs, error: nil)) } @@ -68,6 +68,12 @@ class InAppProductQueryRequest: NSObject, SKProductsRequestDelegate { } func request(_ request: SKRequest, didFailWithError error: Error) { - callback(RetrieveResults(retrievedProducts: Set(), invalidProductIDs: Set(), error: error)) + performCallback(RetrieveResults(retrievedProducts: Set(), invalidProductIDs: Set(), error: error)) + } + + private func performCallback(_ results: RetrieveResults) { + DispatchQueue.main.async { + self.callback(results) + } } } diff --git a/SwiftyStoreKit/InAppReceiptRefreshRequest.swift b/SwiftyStoreKit/InAppReceiptRefreshRequest.swift index 5cdc5fa8..b1ab45c8 100644 --- a/SwiftyStoreKit/InAppReceiptRefreshRequest.swift +++ b/SwiftyStoreKit/InAppReceiptRefreshRequest.swift @@ -66,11 +66,15 @@ class InAppReceiptRefreshRequest: NSObject, SKRequestDelegate { print("\(k): \(v)") } }*/ - callback(.success) + performCallback(.success) } func request(_ request: SKRequest, didFailWithError error: Error) { // XXX could here check domain and error code to return typed exception - callback(.error(e: error)) + performCallback(.error(e: error)) + } + private func performCallback(_ result: ResultType) { + DispatchQueue.main.async { + self.callback(result) + } } - }