summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2022-11-01 08:05:58 +0100
committerAndrej Mihajlov <and@mullvad.net>2022-11-08 10:18:58 +0100
commitf87df94b09403bf88d745aed475e182a5319dda9 (patch)
tree285f11082b7de2a39cb226d8ca4c81c6f429ba92
parent42d326276f448b81e1ca73682e71470b6060c880 (diff)
downloadmullvadvpn-f87df94b09403bf88d745aed475e182a5319dda9.tar.xz
mullvadvpn-f87df94b09403bf88d745aed475e182a5319dda9.zip
Payments: reduce code duplication when calling observers
-rw-r--r--ios/MullvadVPN/StorePaymentManager/StorePaymentManager.swift60
1 files changed, 26 insertions, 34 deletions
diff --git a/ios/MullvadVPN/StorePaymentManager/StorePaymentManager.swift b/ios/MullvadVPN/StorePaymentManager/StorePaymentManager.swift
index 6b316fd3cc..d733d3bae6 100644
--- a/ios/MullvadVPN/StorePaymentManager/StorePaymentManager.swift
+++ b/ios/MullvadVPN/StorePaymentManager/StorePaymentManager.swift
@@ -13,7 +13,7 @@ import MullvadTypes
import Operations
import StoreKit
-class StorePaymentManager: NSObject, SKPaymentTransactionObserver {
+final class StorePaymentManager: NSObject, SKPaymentTransactionObserver {
private enum OperationCategory {
static let sendStoreReceipt = "StorePaymentManager.sendStoreReceipt"
static let productsRequest = "StorePaymentManager.productsRequest"
@@ -244,9 +244,7 @@ class StorePaymentManager: NSObject, SKPaymentTransactionObserver {
)
)
- operation.addCondition(
- MutuallyExclusive(category: OperationCategory.sendStoreReceipt)
- )
+ operation.addCondition(MutuallyExclusive(category: OperationCategory.sendStoreReceipt))
operationQueue.addOperation(operation)
@@ -293,32 +291,26 @@ class StorePaymentManager: NSObject, SKPaymentTransactionObserver {
private func didFailPurchase(transaction: SKPaymentTransaction) {
paymentQueue.finishTransaction(transaction)
+ let paymentFailure: StorePaymentFailure
+
if let accountToken = deassociateAccountToken(transaction.payment) {
- let event = StorePaymentEvent.failure(
- StorePaymentFailure(
- transaction: transaction,
- payment: transaction.payment,
- accountNumber: accountToken,
- error: .storePayment(transaction.error!)
- )
+ paymentFailure = StorePaymentFailure(
+ transaction: transaction,
+ payment: transaction.payment,
+ accountNumber: accountToken,
+ error: .storePayment(transaction.error!)
)
-
- observerList.forEach { observer in
- observer.storePaymentManager(self, didReceiveEvent: event)
- }
} else {
- let event = StorePaymentEvent.failure(
- StorePaymentFailure(
- transaction: transaction,
- payment: transaction.payment,
- accountNumber: nil,
- error: .noAccountSet
- )
+ paymentFailure = StorePaymentFailure(
+ transaction: transaction,
+ payment: transaction.payment,
+ accountNumber: nil,
+ error: .noAccountSet
)
+ }
- observerList.forEach { observer in
- observer.storePaymentManager(self, didReceiveEvent: event)
- }
+ observerList.forEach { observer in
+ observer.storePaymentManager(self, didReceiveEvent: .failure(paymentFailure))
}
}
@@ -340,34 +332,34 @@ class StorePaymentManager: NSObject, SKPaymentTransactionObserver {
}
_ = sendStoreReceipt(accountToken: accountToken, forceRefresh: false) { completion in
+ var event: StorePaymentEvent?
+
switch completion {
case let .success(response):
self.paymentQueue.finishTransaction(transaction)
- let event = StorePaymentEvent.finished(StorePaymentCompletion(
+ event = StorePaymentEvent.finished(StorePaymentCompletion(
transaction: transaction,
accountNumber: accountToken,
serverResponse: response
))
- self.observerList.forEach { observer in
- observer.storePaymentManager(self, didReceiveEvent: event)
- }
-
case let .failure(error):
- let event = StorePaymentEvent.failure(StorePaymentFailure(
+ event = StorePaymentEvent.failure(StorePaymentFailure(
transaction: transaction,
payment: transaction.payment,
accountNumber: accountToken,
error: error
))
+ case .cancelled:
+ break
+ }
+
+ if let event = event {
self.observerList.forEach { observer in
observer.storePaymentManager(self, didReceiveEvent: event)
}
-
- case .cancelled:
- break
}
}
}