From 662225633984c8aa2a8b06691a6aef720abbdce9 Mon Sep 17 00:00:00 2001 From: Andrea Busi Date: Fri, 23 Apr 2021 10:33:22 +0200 Subject: [PATCH] refactor: Improve code in VersioneProProducts class --- .../SubscriptionProductTableViewCell.swift | 6 +-- .../SubscriptionsActiveTableViewCell.swift | 2 +- .../InApp/SubscriptionsViewController.swift | 2 +- .../Models/VersioneProProducts.swift | 49 +++++++++---------- 4 files changed, 28 insertions(+), 31 deletions(-) diff --git a/Sources/Earthquake Network/Controllers/InApp/SubscriptionProductTableViewCell.swift b/Sources/Earthquake Network/Controllers/InApp/SubscriptionProductTableViewCell.swift index 4079348..23f367f 100644 --- a/Sources/Earthquake Network/Controllers/InApp/SubscriptionProductTableViewCell.swift +++ b/Sources/Earthquake Network/Controllers/InApp/SubscriptionProductTableViewCell.swift @@ -33,17 +33,17 @@ class SubscriptionProductTableViewCell: EQNInsetTableViewCell { private func updateUI() { guard let product = product else { return } - productImageView.image = imageForProductIdentifier(product.productIdentifier) + productImageView.image = VersioneProProducts.image(for: product.productIdentifier) productTitleLabel.text = product.localizedTitle productDescriptionLabel?.text = product.localizedDescription - let infoKey = is100kSubscriptionForProductIdentifier(product.productIdentifier) ? "inapp_available_100k" : "inapp_available_10k" + let infoKey = VersioneProProducts.is100kSubscription(for: product.productIdentifier) ? "inapp_available_100k" : "inapp_available_10k" let counter = availability(for: product.productIdentifier) productInfoLabel.text = String(format: NSLocalizedString(infoKey, comment: ""), counter) } private func availability(for productIdentifier: String) -> Int { - if is100kSubscriptionForProductIdentifier(productIdentifier) { + if VersioneProProducts.is100kSubscription(for: productIdentifier) { return availability?.top100kAvailable ?? 0 } return availability?.top10kAvailable ?? 0 diff --git a/Sources/Earthquake Network/Controllers/InApp/SubscriptionsActiveTableViewCell.swift b/Sources/Earthquake Network/Controllers/InApp/SubscriptionsActiveTableViewCell.swift index 8d0ae66..b27cffe 100644 --- a/Sources/Earthquake Network/Controllers/InApp/SubscriptionsActiveTableViewCell.swift +++ b/Sources/Earthquake Network/Controllers/InApp/SubscriptionsActiveTableViewCell.swift @@ -40,7 +40,7 @@ class SubscriptionsActiveTableViewCell: EQNInsetTableViewCell { if let productIdentifier = product?.productIdentifier { noSubscriptionsLabel.isHidden = true activeSubscriptionImageView.isHidden = false - activeSubscriptionImageView.image = imageForProductIdentifier(productIdentifier) + activeSubscriptionImageView.image = VersioneProProducts.image(for: productIdentifier) } else { noSubscriptionsLabel.isHidden = false activeSubscriptionImageView.isHidden = true diff --git a/Sources/Earthquake Network/Controllers/InApp/SubscriptionsViewController.swift b/Sources/Earthquake Network/Controllers/InApp/SubscriptionsViewController.swift index 3d5f51d..5934f15 100644 --- a/Sources/Earthquake Network/Controllers/InApp/SubscriptionsViewController.swift +++ b/Sources/Earthquake Network/Controllers/InApp/SubscriptionsViewController.swift @@ -142,7 +142,7 @@ class SubscriptionsViewController: UITableViewController { let purchased = products.filter { (product) -> Bool in let isPurchased = VersioneProProducts.store.isProductPurchased(product.productIdentifier) - let isSubscription = VersioneProProducts.Identifier.isSubscription(for: product.productIdentifier) + let isSubscription = VersioneProProducts.isSubscription(for: product.productIdentifier) return isPurchased && isSubscription } self.subscribedProduct = purchased.first diff --git a/Sources/Earthquake Network/Models/VersioneProProducts.swift b/Sources/Earthquake Network/Models/VersioneProProducts.swift index 9eaeba6..e78e651 100644 --- a/Sources/Earthquake Network/Models/VersioneProProducts.swift +++ b/Sources/Earthquake Network/Models/VersioneProProducts.swift @@ -67,10 +67,30 @@ public struct VersioneProProducts { Subscription10kYearly, Subscription10kYearlyDiscounted, Subscription100kYearly, Subscription100kYearlyDiscounted ] - - static func isSubscription(for identifier: String) -> Bool { - Self.identifierForSubscriptions.contains(identifier) + } + + static func isSubscription(for identifier: String) -> Bool { + Identifier.identifierForSubscriptions.contains(identifier) + } + + static func is10kSubscription(for identifier: String) -> Bool { + Identifier.identifiersForTop10k.contains(identifier) + } + + static func is100kSubscription(for identifier: String) -> Bool { + Identifier.identifiersForTop100k.contains(identifier) + } + + static func image(for productIdentifier: String) -> UIImage? { + if is100kSubscription(for: productIdentifier){ + return UIImage(named: "top_100k") } + + if is10kSubscription(for: productIdentifier) { + return UIImage(named: "top_10k") + } + + return nil } public static let store = IAPHelper(productIds: VersioneProProducts.Identifier.identifiers) @@ -80,27 +100,4 @@ func resourceNameForProductIdentifier(_ productIdentifier: String) -> String? { return productIdentifier.components(separatedBy: ".").last } -func imageForProductIdentifier(_ productIdentifier: String) -> UIImage? { - let products100k = [VersioneProProducts.Identifier.Subscription100kMonthly, - VersioneProProducts.Identifier.Subscription100kYearly, - VersioneProProducts.Identifier.Subscription100kYearlyDiscounted] - if products100k.contains(productIdentifier) { - return UIImage(named: "top_100k") - } - - let products10k = [VersioneProProducts.Identifier.Subscription10kMonthly, - VersioneProProducts.Identifier.Subscription10kYearly, - VersioneProProducts.Identifier.Subscription10kYearlyDiscounted] - if products10k.contains(productIdentifier) { - return UIImage(named: "top_10k") - } - - return nil -} -func is100kSubscriptionForProductIdentifier(_ productIdentifier: String) -> Bool { - let products100k = [VersioneProProducts.Identifier.Subscription100kMonthly, - VersioneProProducts.Identifier.Subscription100kYearly, - VersioneProProducts.Identifier.Subscription100kYearlyDiscounted] - return products100k.contains(productIdentifier) -}