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

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 1 неделя назад
Родитель
Сommit
940191f04a
1 измененных файлов с 13 добавлено и 0 удалено
  1. 13 0
      meetings_app/ViewController.swift

+ 13 - 0
meetings_app/ViewController.swift

@@ -270,6 +270,7 @@ final class ViewController: NSViewController {
270
     private var hasPresentedLaunchPaywall = false
270
     private var hasPresentedLaunchPaywall = false
271
     private var hasViewAppearedOnce = false
271
     private var hasViewAppearedOnce = false
272
     private var lastKnownPremiumAccess = false
272
     private var lastKnownPremiumAccess = false
273
+    private var displayedScheduleMeetings: [ScheduledMeeting] = []
273
 
274
 
274
     private enum ScheduleFilter: Int {
275
     private enum ScheduleFilter: Int {
275
         case all = 0
276
         case all = 0
@@ -962,11 +963,22 @@ private extension ViewController {
962
         let hadPremiumAccess = lastKnownPremiumAccess
963
         let hadPremiumAccess = lastKnownPremiumAccess
963
         lastKnownPremiumAccess = hasPremiumAccess
964
         lastKnownPremiumAccess = hasPremiumAccess
964
         refreshPaywallStoreUI()
965
         refreshPaywallStoreUI()
966
+        refreshScheduleCardsForPremiumStateChange()
967
+        if !hadPremiumAccess && hasPremiumAccess {
968
+            Task { [weak self] in
969
+                await self?.loadSchedule()
970
+            }
971
+        }
965
         if hadPremiumAccess && !hasPremiumAccess {
972
         if hadPremiumAccess && !hasPremiumAccess {
966
             showPaywall()
973
             showPaywall()
967
         }
974
         }
968
     }
975
     }
969
 
976
 
977
+    private func refreshScheduleCardsForPremiumStateChange() {
978
+        guard let stack = scheduleCardsStack else { return }
979
+        renderScheduleCards(into: stack, meetings: displayedScheduleMeetings)
980
+    }
981
+
970
     private func refreshSidebarPremiumButton() {
982
     private func refreshSidebarPremiumButton() {
971
         let isPremium = storeKitCoordinator.hasPremiumAccess
983
         let isPremium = storeKitCoordinator.hasPremiumAccess
972
         if isPremium {
984
         if isPremium {
@@ -3710,6 +3722,7 @@ private extension ViewController {
3710
     }
3722
     }
3711
 
3723
 
3712
     private func renderScheduleCards(into stack: NSStackView, meetings: [ScheduledMeeting]) {
3724
     private func renderScheduleCards(into stack: NSStackView, meetings: [ScheduledMeeting]) {
3725
+        displayedScheduleMeetings = meetings
3713
         let shouldShowScrollControls = meetings.count > 3
3726
         let shouldShowScrollControls = meetings.count > 3
3714
         scheduleScrollLeftButton?.isHidden = !shouldShowScrollControls
3727
         scheduleScrollLeftButton?.isHidden = !shouldShowScrollControls
3715
         scheduleScrollRightButton?.isHidden = !shouldShowScrollControls
3728
         scheduleScrollRightButton?.isHidden = !shouldShowScrollControls