Skip to content

Commit 3b54c8e

Browse files
authored
Merge pull request #611 from bizz84/develop
Fixes for macOS
2 parents 8fa93ef + cf82d21 commit 3b54c8e

File tree

3 files changed

+23
-26
lines changed

3 files changed

+23
-26
lines changed

Sources/SwiftyStoreKit/PaymentQueueController.swift

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ protocol TransactionController {
3232
/// - parameter paymentQueue: payment queue for finishing transactions
3333
/// - returns: array of unhandled transactions
3434
func processTransactions(_ transactions: [SKPaymentTransaction], on paymentQueue: PaymentQueue) -> [SKPaymentTransaction]
35+
3536
}
3637

3738
public enum TransactionResult {
@@ -58,11 +59,13 @@ public protocol PaymentQueue: class {
5859
}
5960

6061
extension SKPaymentQueue: PaymentQueue {
62+
6163
#if os(watchOS) && swift(<5.3)
6264
public func resume(_ downloads: [SKDownload]) {
6365
resumeDownloads(downloads)
6466
}
6567
#endif
68+
6669
}
6770

6871
extension SKPaymentTransaction {
@@ -71,12 +74,12 @@ extension SKPaymentTransaction {
7174
let transactionId = transactionIdentifier ?? "null"
7275
return "productId: \(payment.productIdentifier), transactionId: \(transactionId), state: \(transactionState), date: \(String(describing: transactionDate))"
7376
}
77+
7478
}
7579

7680
extension SKPaymentTransactionState: CustomDebugStringConvertible {
7781

7882
public var debugDescription: String {
79-
8083
switch self {
8184
case .purchasing: return "purchasing"
8285
case .purchased: return "purchased"
@@ -90,7 +93,7 @@ extension SKPaymentTransactionState: CustomDebugStringConvertible {
9093

9194
struct EntitlementRevocation {
9295
let callback: ([String]) -> Void
93-
96+
9497
init(callback: @escaping ([String]) -> Void) {
9598
self.callback = callback
9699
}
@@ -99,15 +102,11 @@ struct EntitlementRevocation {
99102
class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
100103

101104
private let paymentsController: PaymentsController
102-
103105
private let restorePurchasesController: RestorePurchasesController
104-
105106
private let completeTransactionsController: CompleteTransactionsController
106-
107107
unowned let paymentQueue: PaymentQueue
108-
109108
private var entitlementRevocation: EntitlementRevocation?
110-
109+
111110
deinit {
112111
paymentQueue.remove(self)
113112
}
@@ -160,10 +159,10 @@ class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
160159
print("SwiftyStoreKit.onEntitlementRevocation() should only be called once when the app launches. Ignoring this call")
161160
return
162161
}
163-
162+
164163
self.entitlementRevocation = revocation
165164
}
166-
165+
167166
func restorePurchases(_ restorePurchases: RestorePurchases) {
168167
assertCompleteTransactionsWasCalled()
169168

@@ -177,7 +176,6 @@ class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
177176
}
178177

179178
func completeTransactions(_ completeTransactions: CompleteTransactions) {
180-
181179
guard completeTransactionsController.completeTransactions == nil else {
182180
print("SwiftyStoreKit.completeTransactions() should only be called once when the app launches. Ignoring this call")
183181
return
@@ -197,23 +195,26 @@ class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
197195
func start(_ downloads: [SKDownload]) {
198196
paymentQueue.start(downloads)
199197
}
198+
200199
func pause(_ downloads: [SKDownload]) {
201200
paymentQueue.pause(downloads)
202201
}
203202

204203
func resume(_ downloads: [SKDownload]) {
205204
paymentQueue.resume(downloads)
206205
}
206+
207207
func cancel(_ downloads: [SKDownload]) {
208208
paymentQueue.cancel(downloads)
209209
}
210210

211211
var shouldAddStorePaymentHandler: ShouldAddStorePaymentHandler?
212212
var updatedDownloadsHandler: UpdatedDownloadsHandler?
213213

214-
// MARK: SKPaymentTransactionObserver
214+
215+
// MARK: - SKPaymentTransactionObserver
216+
215217
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
216-
217218
/*
218219
* Some notes about how requests are processed by SKPaymentQueue:
219220
*
@@ -253,7 +254,6 @@ class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
253254
}
254255

255256
func paymentQueue(_ queue: SKPaymentQueue, didRevokeEntitlementsForProductIdentifiers productIdentifiers: [String]) {
256-
257257
self.entitlementRevocation?.callback(productIdentifiers)
258258
}
259259

@@ -262,24 +262,20 @@ class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
262262
}
263263

264264
func paymentQueue(_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error) {
265-
266265
restorePurchasesController.restoreCompletedTransactionsFailed(withError: error)
267266
}
268267

269268
func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
270-
271269
restorePurchasesController.restoreCompletedTransactionsFinished()
272270
}
273271

274272
func paymentQueue(_ queue: SKPaymentQueue, updatedDownloads downloads: [SKDownload]) {
275-
276273
updatedDownloadsHandler?(downloads)
277274
}
278275

279-
#if os(iOS) && !targetEnvironment(macCatalyst)
276+
// #if os(iOS) && !targetEnvironment(macCatalyst)
280277
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {
281-
282278
return shouldAddStorePaymentHandler?(payment, product) ?? false
283279
}
284-
#endif
280+
// #endif
285281
}

Tests/SwiftyStoreKitTests/PaymentTransactionObserverFake.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
// Copyright © 2017 musevisions. All rights reserved.
77
//
88

9+
#if os(iOS)
10+
911
import UIKit
1012

1113
class PaymentTransactionObserverFake: NSObject {
1214

1315
}
16+
17+
#endif

Tests/SwiftyStoreKitTests/ProductsInfoControllerTests.swift

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,16 @@ import Foundation
2828

2929
class TestInAppProductRequest: InAppProductRequest {
3030

31+
var hasCompleted: Bool
32+
var cachedResults: RetrieveResults?
33+
3134
private let productIds: Set<String>
3235
private let callback: InAppProductRequestCallback
3336

3437
init(productIds: Set<String>, callback: @escaping InAppProductRequestCallback) {
3538
self.productIds = productIds
3639
self.callback = callback
40+
self.hasCompleted = false
3741
}
3842

3943
func start() {
@@ -51,15 +55,8 @@ class TestInAppProductRequest: InAppProductRequest {
5155
class TestInAppProductRequestBuilder: InAppProductRequestBuilder {
5256

5357
var requests: [ TestInAppProductRequest ] = []
54-
var os_unfair_lock_s = os_unfair_lock()
5558

5659
func request(productIds: Set<String>, callback: @escaping InAppProductRequestCallback) -> InAppProductRequest {
57-
// add locks to make sure the test does not fail in preparation
58-
os_unfair_lock_lock(&self.os_unfair_lock_s)
59-
defer {
60-
os_unfair_lock_unlock(&self.os_unfair_lock_s)
61-
}
62-
6360
let request = TestInAppProductRequest(productIds: productIds, callback: callback)
6461
requests.append(request)
6562
return request

0 commit comments

Comments
 (0)