Prechádzať zdrojové kódy

Allow active subscribers to upgrade while preserving lifetime gating.

Hide the Settings upgrade action and disable paywall purchases only for lifetime premium, so weekly/monthly/yearly users can still move to a different plan.

Made-with: Cursor
huzaifahayat12 3 mesiacov pred
rodič
commit
02cf711cf6
1 zmenil súbory, kde vykonal 11 pridanie a 8 odobranie
  1. 11 8
      zoom_app/ViewController.swift

+ 11 - 8
zoom_app/ViewController.swift

@@ -353,6 +353,7 @@ class ViewController: NSViewController {
         private(set) var activeProductIDs = Set<String>()
 
         var hasPremiumAccess: Bool { !activeProductIDs.isEmpty }
+        var hasLifetimePremiumAccess: Bool { activeProductIDs.contains(PremiumPlan.lifetime.rawValue) }
 
         private var transactionUpdatesTask: Task<Void, Never>?
         var onEntitlementsChanged: ((Bool) -> Void)?
@@ -3129,10 +3130,12 @@ class ViewController: NSViewController {
     @MainActor
     private func updatePremiumButtons() {
         let isPremium = storeKitCoordinator.hasPremiumAccess
+        let hasLifetimePremium = storeKitCoordinator.hasLifetimePremiumAccess
         settingsUpgradeButton?.title = ""
-        settingsUpgradeTitleLabel?.stringValue = isPremium ? "Premium Active" : "Upgrade"
-        settingsUpgradeButton?.isEnabled = isPremium == false
-        settingsUpgradeButton?.alphaValue = isPremium ? 0.6 : 1.0
+        settingsUpgradeTitleLabel?.stringValue = hasLifetimePremium ? "Premium Lifetime" : "Upgrade"
+        settingsUpgradeButton?.isHidden = hasLifetimePremium
+        settingsUpgradeButton?.isEnabled = hasLifetimePremium == false
+        settingsUpgradeButton?.alphaValue = hasLifetimePremium ? 0.6 : 1.0
         updatePremiumLockedSections()
         if isPremium == false, isUserLoggedIn() {
             applyMeetings([])
@@ -3215,7 +3218,7 @@ class ViewController: NSViewController {
     }
 
     @objc private func settingsUpgradePremiumTapped() {
-        guard storeKitCoordinator.hasPremiumAccess == false else { return }
+        guard storeKitCoordinator.hasLifetimePremiumAccess == false else { return }
         showPaywall()
     }
 
@@ -3613,8 +3616,8 @@ class ViewController: NSViewController {
     }
 
     private func paywallOfferText(for plan: PremiumPlan) -> String {
-        if storeKitCoordinator.hasPremiumAccess {
-            return "Premium is active on this Apple ID."
+        if storeKitCoordinator.hasLifetimePremiumAccess {
+            return "Lifetime premium is active on this Apple ID."
         }
         let price = paywallDisplayPrice(for: plan)
         switch plan {
@@ -3688,9 +3691,9 @@ class ViewController: NSViewController {
             paywallContinueButton?.alphaValue = 0.75
             return
         }
-        if storeKitCoordinator.hasPremiumAccess {
+        if storeKitCoordinator.hasLifetimePremiumAccess {
             paywallContinueEnabled = false
-            paywallContinueLabel?.stringValue = "Premium Active"
+            paywallContinueLabel?.stringValue = "Lifetime Premium Active"
             paywallContinueButton?.alphaValue = 0.75
         } else {
             paywallContinueEnabled = true