ソースを参照

Restore cached premium on launch and show intro trials only from StoreKit offers.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 3 週間 前
コミット
8d0da81d77
1 ファイル変更11 行追加8 行削除
  1. 11 8
      App AI for Reddit/Managers/SubscriptionManager.swift

+ 11 - 8
App AI for Reddit/Managers/SubscriptionManager.swift

@@ -81,6 +81,15 @@ final class SubscriptionManager: ObservableObject {
 
     init() {
         hasEverPurchasedPremium = UserDefaults.standard.bool(forKey: Self.cachedHasEverPurchasedKey)
+
+        // Optimistic restore so returning subscribers aren't paywalled while StoreKit resolves.
+        if UserDefaults.standard.bool(forKey: Self.cachedPremiumKey) {
+            hasPremiumAccess = true
+            if let planRaw = UserDefaults.standard.string(forKey: Self.cachedPremiumPlanKey),
+               let plan = PaywallPlan(rawValue: planRaw) {
+                activePremiumPlan = plan
+            }
+        }
     }
 
     func start() {
@@ -512,14 +521,8 @@ final class SubscriptionManager: ObservableObject {
         }
         guard await subscription.isEligibleForIntroOffer else { return nil }
 
-        let config = PaywallConfigService.shared.config
-        if let offer = subscription.introductoryOffer {
-            return PaywallTrialDisplay.from(offer: offer, config: config)
-        }
-        if let fallback = config.trial.fallbackDuration {
-            return PaywallTrialDisplay.from(fallback: fallback, config: config)
-        }
-        return nil
+        guard let offer = subscription.introductoryOffer else { return nil }
+        return PaywallTrialDisplay.from(offer: offer, config: PaywallConfigService.shared.config)
     }
 
     private func persistPremiumCache() {