Bladeren bron

Refresh schedule and meeting pages on auth and premium state changes.

Ensure Schedule re-renders after Google logout and force Join Meetings to rebuild when premium access toggles so UI state stays in sync.

Made-with: Cursor
huzaifahayat12 1 week geleden
bovenliggende
commit
75ad90b765
1 gewijzigde bestanden met toevoegingen van 21 en 8 verwijderingen
  1. 21 8
      meetings_app/ViewController.swift

+ 21 - 8
meetings_app/ViewController.swift

@@ -1095,9 +1095,17 @@ private extension ViewController {
1095 1095
         premiumUpgradeRatingPromptWorkItem?.cancel()
1096 1096
         refreshPaywallStoreUI()
1097 1097
         refreshScheduleCardsForPremiumStateChange()
1098
+
1099
+        pageCache[.joinMeetings] = nil
1100
+        if selectedSidebarPage == .joinMeetings {
1101
+            showSidebarPage(.joinMeetings)
1102
+        }
1103
+
1098 1104
         if !hadPremiumAccess && hasPremiumAccess {
1099
-            Task { [weak self] in
1100
-                await self?.loadSchedule()
1105
+            if selectedSidebarPage != .joinMeetings {
1106
+                Task { [weak self] in
1107
+                    await self?.loadSchedule()
1108
+                }
1101 1109
             }
1102 1110
             // Skip delayed review prompt during initial launch entitlement sync.
1103 1111
             // We only want this after a real in-session upgrade.
@@ -1215,8 +1223,10 @@ private extension ViewController {
1215 1223
     }
1216 1224
 
1217 1225
     private func refreshScheduleCardsForPremiumStateChange() {
1218
-        guard let stack = scheduleCardsStack else { return }
1219
-        renderScheduleCards(into: stack, meetings: displayedScheduleMeetings)
1226
+        if let stack = scheduleCardsStack {
1227
+            renderScheduleCards(into: stack, meetings: displayedScheduleMeetings)
1228
+        }
1229
+        applySchedulePageFiltersAndRender()
1220 1230
     }
1221 1231
 
1222 1232
     private func refreshSidebarPremiumButton() {
@@ -4773,10 +4783,13 @@ private extension ViewController {
4773 4783
     private func performGoogleSignOut() {
4774 4784
         do {
4775 4785
             try googleOAuth.signOut()
4776
-            applyGoogleProfile(nil)
4777
-            scheduleDateHeadingLabel?.stringValue = "Connect Google to see meetings"
4778
-            if let stack = scheduleCardsStack {
4779
-                renderScheduleCards(into: stack, meetings: [])
4786
+            pageCache[.photo] = nil
4787
+            if selectedSidebarPage == .photo {
4788
+                showSidebarPage(.photo)
4789
+            } else {
4790
+                Task { [weak self] in
4791
+                    await self?.loadSchedule()
4792
+                }
4780 4793
             }
4781 4794
         } catch {
4782 4795
             showSimpleError("Couldn’t logout Google account.", error: error)