Files
Jot/Carthage/Checkouts/PromiseKit/Extensions/StoreKit/Sources/SKReceiptRefreshRequest+Promise.swift
James Griffin be7b6b5881 Add PromiseKit dependency
- Added PromiseKit dependency
2018-11-15 22:12:39 -04:00

36 lines
888 B
Swift

#if !PMKCocoaPods
import PromiseKit
#endif
import StoreKit
extension SKReceiptRefreshRequest {
public func promise() -> Promise<SKReceiptRefreshRequest> {
return ReceiptRefreshObserver(request: self).promise
}
}
private class ReceiptRefreshObserver: NSObject, SKRequestDelegate {
let (promise, seal) = Promise<SKReceiptRefreshRequest>.pending()
let request: SKReceiptRefreshRequest
var retainCycle: ReceiptRefreshObserver?
init(request: SKReceiptRefreshRequest) {
self.request = request
super.init()
request.delegate = self
request.start()
retainCycle = self
}
func requestDidFinish(_: SKRequest) {
seal.fulfill(request)
retainCycle = nil
}
func request(_: SKRequest, didFailWithError error: Error) {
seal.reject(error)
retainCycle = nil
}
}