Skip to content

Commit 22bc723

Browse files
committed
PMK 5.0.0
1 parent a56c183 commit 22bc723

File tree

6 files changed

+31
-52
lines changed

6 files changed

+31
-52
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
*.xcodeproj/**/xcuserdata/
22
*.xcscmblueprint
33
/Carthage
4-
/Cartfile.resolved
54
/.build
5+
.DS_Store

Cartfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
github "mxcl/PromiseKit" ~> 4.0
1+
github "mxcl/PromiseKit" ~> 5.0

Sources/SKPayment+Promise.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import StoreKit
2-
#if !COCOAPODS
1+
#if !PMKCocoaPods
32
import PromiseKit
43
#endif
4+
import StoreKit
55

66
extension SKPayment {
77
public func promise() -> Promise<SKPaymentTransaction> {
88
return PaymentObserver(payment: self).promise
99
}
1010
}
1111

12-
fileprivate class PaymentObserver: NSObject, SKPaymentTransactionObserver {
13-
let (promise, fulfill, reject) = Promise<SKPaymentTransaction>.pending()
12+
private class PaymentObserver: NSObject, SKPaymentTransactionObserver {
13+
let (promise, seal) = Promise<SKPaymentTransaction>.pending()
1414
let payment: SKPayment
1515
var retainCycle: PaymentObserver?
1616

@@ -29,13 +29,13 @@ fileprivate class PaymentObserver: NSObject, SKPaymentTransactionObserver {
2929
switch transaction.transactionState {
3030
case .purchased:
3131
queue.finishTransaction(transaction)
32-
fulfill(transaction)
32+
seal.fulfill(transaction)
3333
queue.remove(self)
3434
retainCycle = nil
3535
case .failed:
36-
let error = transaction.error ?? NSError.cancelledError()
36+
let error = transaction.error ?? PMKError.cancelled
3737
queue.finishTransaction(transaction)
38-
reject(error)
38+
seal.reject(error)
3939
queue.remove(self)
4040
retainCycle = nil
4141
default:

Sources/SKProductsRequest+Promise.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import StoreKit
2-
#if !COCOAPODS
2+
#if !PMKCocoaPods
33
import PromiseKit
44
#endif
55

@@ -19,7 +19,7 @@ extension SKProductsRequest {
1919

2020
- Returns: A promise that fulfills if the request succeeds.
2121
*/
22-
public func promise() -> Promise<SKProductsResponse> {
22+
public func start(_: PMKNamespacer) -> Promise<SKProductsResponse> {
2323
let proxy = SKDelegate()
2424
delegate = proxy
2525
proxy.retainCycle = proxy
@@ -30,23 +30,23 @@ extension SKProductsRequest {
3030

3131

3232
fileprivate class SKDelegate: NSObject, SKProductsRequestDelegate {
33-
let (promise, fulfill, reject) = Promise<SKProductsResponse>.pending()
33+
let (promise, seal) = Promise<SKProductsResponse>.pending()
3434
var retainCycle: SKDelegate?
3535

3636
@objc fileprivate func request(_ request: SKRequest, didFailWithError error: Error) {
37-
reject(error)
37+
seal.reject(error)
3838
retainCycle = nil
3939
}
4040

4141
@objc fileprivate func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
42-
fulfill(response)
42+
seal.fulfill(response)
4343
retainCycle = nil
4444
}
45-
46-
#if swift(>=3.2)
47-
#else
48-
@objc override class func initialize() {
49-
NSError.registerCancelledErrorDomain(SKErrorDomain, code: SKError.Code.paymentCancelled.rawValue)
50-
}
51-
#endif
5245
}
46+
47+
// perhaps one day Apple will actually make their errors into Errors…
48+
//extension SKError: CancellableError {
49+
// public var isCancelled: Bool {
50+
// return true
51+
// }
52+
//}
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import StoreKit
2-
#if !COCOAPODS
1+
#if !PMKCocoaPods
32
import PromiseKit
43
#endif
4+
import StoreKit
55

66
extension SKReceiptRefreshRequest {
77
public func promise() -> Promise<SKReceiptRefreshRequest> {
88
return ReceiptRefreshObserver(request: self).promise
99
}
1010
}
1111

12-
fileprivate class ReceiptRefreshObserver: NSObject, SKRequestDelegate {
13-
let (promise, fulfill, reject) = Promise<SKReceiptRefreshRequest>.pending()
12+
private class ReceiptRefreshObserver: NSObject, SKRequestDelegate {
13+
let (promise, seal) = Promise<SKReceiptRefreshRequest>.pending()
1414
let request: SKReceiptRefreshRequest
1515
var retainCycle: ReceiptRefreshObserver?
1616

@@ -23,13 +23,13 @@ fileprivate class ReceiptRefreshObserver: NSObject, SKRequestDelegate {
2323
}
2424

2525

26-
func requestDidFinish(_ request: SKRequest) {
27-
fulfill(self.request)
26+
func requestDidFinish(_: SKRequest) {
27+
seal.fulfill(request)
2828
retainCycle = nil
2929
}
3030

31-
func request(_ request: SKRequest, didFailWithError error: Error) {
32-
reject(error)
31+
func request(_: SKRequest, didFailWithError error: Error) {
32+
seal.reject(error)
3333
retainCycle = nil
3434
}
3535
}

Tests/TestStoreKit.swift

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,37 +7,16 @@ class SKProductsRequestTests: XCTestCase {
77
func test() {
88
class MockProductsRequest: SKProductsRequest {
99
override func start() {
10-
after(interval: 0.1).then {
10+
after(seconds: 0.1).done {
1111
self.delegate?.productsRequest(self, didReceive: SKProductsResponse())
1212
}
1313
}
1414
}
1515

1616
let ex = expectation(description: "")
17-
MockProductsRequest().promise().then { _ in
17+
MockProductsRequest().start(.promise).done { _ in
1818
ex.fulfill()
1919
}
2020
waitForExpectations(timeout: 1, handler: nil)
2121
}
22-
23-
#if swift(>=3.2)
24-
#else
25-
func testCancellation() {
26-
class MockProductsRequest: SKProductsRequest {
27-
override func start() {
28-
after(interval: 0.1).then { _ -> Void in
29-
let err = NSError(domain: SKErrorDomain, code: SKError.Code.paymentCancelled.rawValue, userInfo: nil)
30-
self.delegate?.request?(self, didFailWithError: err)
31-
}
32-
}
33-
}
34-
35-
let ex = expectation(description: "")
36-
MockProductsRequest().promise().catch(policy: .allErrors) { err in
37-
XCTAssert((err as NSError).isCancelled)
38-
ex.fulfill()
39-
}
40-
waitForExpectations(timeout: 1, handler: nil)
41-
}
42-
#endif
4322
}

0 commit comments

Comments
 (0)