[iOS] fix multiple pending transactions

This commit is contained in:
Aleksey Belouosv 2019-04-30 11:41:50 +03:00 committed by Arsentiy Milchakov
parent ead3240223
commit 4e9defed60

View file

@ -11,7 +11,7 @@ final class BillingPendingTransaction: NSObject, IBillingPendingTransaction {
}
var status: TransactionStatus {
let routeTransactions = SKPaymentQueue.default().transactions.filter {
var routeTransactions = SKPaymentQueue.default().transactions.filter {
var isOk = !Subscription.legacyProductIds.contains($0.payment.productIdentifier) &&
!Subscription.productIds.contains($0.payment.productIdentifier)
if isOk && $0.transactionState == .purchasing {
@ -23,24 +23,22 @@ final class BillingPendingTransaction: NSObject, IBillingPendingTransaction {
}
if routeTransactions.count > 1 {
return .error
pendingTransaction = routeTransactions.last
routeTransactions.prefix(routeTransactions.count - 1).forEach {
SKPaymentQueue.default().finishTransaction($0)
}
} else if routeTransactions.count == 1 {
pendingTransaction = routeTransactions[0]
switch pendingTransaction!.transactionState {
case .purchasing:
fallthrough
case .failed:
return .failed
case .purchased:
fallthrough
case .restored:
fallthrough
case .deferred:
return .paid
}
} else {
return .none
}
switch pendingTransaction!.transactionState {
case .purchasing, .failed:
return .failed
case .purchased, .restored, .deferred:
return .paid
}
}
func finishTransaction() {