Browse Source

Refresh schedule cards immediately on premium state changes.

Re-render visible schedule cards when entitlement changes, and auto-reload meetings after upgrade so unlocked event cards update instantly.

Made-with: Cursor
huzaifahayat12 3 tháng trước cách đây
mục cha
commit
940191f04a
1 tập tin đã thay đổi với 13 bổ sung0 xóa
  1. 13 0
      meetings_app/ViewController.swift

+ 13 - 0
meetings_app/ViewController.swift

@@ -270,6 +270,7 @@ final class ViewController: NSViewController {
     private var hasPresentedLaunchPaywall = false
     private var hasViewAppearedOnce = false
     private var lastKnownPremiumAccess = false
+    private var displayedScheduleMeetings: [ScheduledMeeting] = []
 
     private enum ScheduleFilter: Int {
         case all = 0
@@ -962,11 +963,22 @@ private extension ViewController {
         let hadPremiumAccess = lastKnownPremiumAccess
         lastKnownPremiumAccess = hasPremiumAccess
         refreshPaywallStoreUI()
+        refreshScheduleCardsForPremiumStateChange()
+        if !hadPremiumAccess && hasPremiumAccess {
+            Task { [weak self] in
+                await self?.loadSchedule()
+            }
+        }
         if hadPremiumAccess && !hasPremiumAccess {
             showPaywall()
         }
     }
 
+    private func refreshScheduleCardsForPremiumStateChange() {
+        guard let stack = scheduleCardsStack else { return }
+        renderScheduleCards(into: stack, meetings: displayedScheduleMeetings)
+    }
+
     private func refreshSidebarPremiumButton() {
         let isPremium = storeKitCoordinator.hasPremiumAccess
         if isPremium {
@@ -3710,6 +3722,7 @@ private extension ViewController {
     }
 
     private func renderScheduleCards(into stack: NSStackView, meetings: [ScheduledMeeting]) {
+        displayedScheduleMeetings = meetings
         let shouldShowScrollControls = meetings.count > 3
         scheduleScrollLeftButton?.isHidden = !shouldShowScrollControls
         scheduleScrollRightButton?.isHidden = !shouldShowScrollControls