|
@@ -487,6 +487,10 @@ private extension ViewController {
|
|
|
|
|
|
|
|
@objc private func premiumButtonClicked(_ sender: NSClickGestureRecognizer) {
|
|
@objc private func premiumButtonClicked(_ sender: NSClickGestureRecognizer) {
|
|
|
if storeKitCoordinator.hasPremiumAccess {
|
|
if storeKitCoordinator.hasPremiumAccess {
|
|
|
|
|
+ if hasReachedRatingUsageThreshold && !userHasRated {
|
|
|
|
|
+ requestAppRatingIfEligible(markAsRated: false)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
showPaywall(upgradeFlow: true, preferredPlan: .lifetime)
|
|
showPaywall(upgradeFlow: true, preferredPlan: .lifetime)
|
|
|
} else {
|
|
} else {
|
|
|
showPaywall()
|
|
showPaywall()
|
|
@@ -1059,7 +1063,11 @@ private extension ViewController {
|
|
|
Task { [weak self] in
|
|
Task { [weak self] in
|
|
|
await self?.loadSchedule()
|
|
await self?.loadSchedule()
|
|
|
}
|
|
}
|
|
|
- scheduleRatingPromptAfterPremiumUpgrade()
|
|
|
|
|
|
|
+ // Skip delayed review prompt during initial launch entitlement sync.
|
|
|
|
|
+ // We only want this after a real in-session upgrade.
|
|
|
|
|
+ if hasCompletedInitialStoreKitSync {
|
|
|
|
|
+ scheduleRatingPromptAfterPremiumUpgrade()
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
if hadPremiumAccess && !hasPremiumAccess {
|
|
if hadPremiumAccess && !hasPremiumAccess {
|
|
|
showPaywall()
|
|
showPaywall()
|