Browse Source

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 ago
parent
commit
75ad90b765
1 changed files with 21 additions and 8 deletions
  1. 21 8
      meetings_app/ViewController.swift

+ 21 - 8
meetings_app/ViewController.swift

@@ -1095,9 +1095,17 @@ private extension ViewController {
1095
         premiumUpgradeRatingPromptWorkItem?.cancel()
1095
         premiumUpgradeRatingPromptWorkItem?.cancel()
1096
         refreshPaywallStoreUI()
1096
         refreshPaywallStoreUI()
1097
         refreshScheduleCardsForPremiumStateChange()
1097
         refreshScheduleCardsForPremiumStateChange()
1098
+
1099
+        pageCache[.joinMeetings] = nil
1100
+        if selectedSidebarPage == .joinMeetings {
1101
+            showSidebarPage(.joinMeetings)
1102
+        }
1103
+
1098
         if !hadPremiumAccess && hasPremiumAccess {
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
             // Skip delayed review prompt during initial launch entitlement sync.
1110
             // Skip delayed review prompt during initial launch entitlement sync.
1103
             // We only want this after a real in-session upgrade.
1111
             // We only want this after a real in-session upgrade.
@@ -1215,8 +1223,10 @@ private extension ViewController {
1215
     }
1223
     }
1216
 
1224
 
1217
     private func refreshScheduleCardsForPremiumStateChange() {
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
     private func refreshSidebarPremiumButton() {
1232
     private func refreshSidebarPremiumButton() {
@@ -4773,10 +4783,13 @@ private extension ViewController {
4773
     private func performGoogleSignOut() {
4783
     private func performGoogleSignOut() {
4774
         do {
4784
         do {
4775
             try googleOAuth.signOut()
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
         } catch {
4794
         } catch {
4782
             showSimpleError("Couldn’t logout Google account.", error: error)
4795
             showSimpleError("Couldn’t logout Google account.", error: error)