Просмотр исходного кода

Allow premium users to open the upgrade paywall and confirm before repurchasing.

This keeps the upgrade path available for plan changes while adding an explicit consent step when premium access is already active.

Made-with: Cursor
huzaifahayat12 3 месяцев назад
Родитель
Сommit
9dc946cfd4
1 измененных файлов с 16 добавлено и 10 удалено
  1. 16 10
      meetings_app/ViewController.swift

+ 16 - 10
meetings_app/ViewController.swift

@@ -470,7 +470,7 @@ private extension ViewController {
 
 
     @objc private func premiumButtonClicked(_ sender: NSClickGestureRecognizer) {
     @objc private func premiumButtonClicked(_ sender: NSClickGestureRecognizer) {
         if storeKitCoordinator.hasPremiumAccess {
         if storeKitCoordinator.hasPremiumAccess {
-            openManageSubscriptions()
+            showPaywall(upgradeFlow: true, preferredPlan: .lifetime)
         } else {
         } else {
             showPaywall()
             showPaywall()
         }
         }
@@ -800,6 +800,15 @@ private extension ViewController {
         alert.runModal()
         alert.runModal()
     }
     }
 
 
+    private func confirmPremiumUpgrade() -> Bool {
+        let alert = NSAlert()
+        alert.messageText = "Already Premium"
+        alert.informativeText = "You are already premium. Do you want to continue with this purchase?"
+        alert.addButton(withTitle: "Continue")
+        alert.addButton(withTitle: "Cancel")
+        return alert.runModal() == .alertFirstButtonReturn
+    }
+
     private func showPaywall(upgradeFlow: Bool = false, preferredPlan: PremiumPlan? = nil) {
     private func showPaywall(upgradeFlow: Bool = false, preferredPlan: PremiumPlan? = nil) {
         paywallUpgradeFlowEnabled = upgradeFlow
         paywallUpgradeFlowEnabled = upgradeFlow
         if let preferredPlan {
         if let preferredPlan {
@@ -1094,6 +1103,9 @@ private extension ViewController {
             }
             }
             return
             return
         }
         }
+        if paywallUpgradeFlowEnabled && storeKitCoordinator.hasPremiumAccess && !confirmPremiumUpgrade() {
+            return
+        }
         paywallPurchaseTask?.cancel()
         paywallPurchaseTask?.cancel()
         updatePaywallContinueState(isLoading: true)
         updatePaywallContinueState(isLoading: true)
         let selectedPlan = selectedPremiumPlan
         let selectedPlan = selectedPremiumPlan
@@ -1132,15 +1144,9 @@ private extension ViewController {
             paywallContinueLabel?.stringValue = "Premium Active"
             paywallContinueLabel?.stringValue = "Premium Active"
             paywallContinueButton?.alphaValue = 0.75
             paywallContinueButton?.alphaValue = 0.75
         } else if paywallUpgradeFlowEnabled && storeKitCoordinator.hasPremiumAccess {
         } else if paywallUpgradeFlowEnabled && storeKitCoordinator.hasPremiumAccess {
-            if selectedPremiumPlan == .lifetime {
-                paywallContinueEnabled = true
-                paywallContinueLabel?.stringValue = "Continue"
-                paywallContinueButton?.alphaValue = 1.0
-            } else {
-                paywallContinueEnabled = false
-                paywallContinueLabel?.stringValue = "Select Lifetime to Upgrade"
-                paywallContinueButton?.alphaValue = 0.75
-            }
+            paywallContinueEnabled = true
+            paywallContinueLabel?.stringValue = "Continue"
+            paywallContinueButton?.alphaValue = 1.0
         } else {
         } else {
             paywallContinueEnabled = true
             paywallContinueEnabled = true
             paywallContinueLabel?.stringValue = "Continue"
             paywallContinueLabel?.stringValue = "Continue"