Kaynağa Gözat

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 3 ay önce
ebeveyn
işleme
75ad90b765
1 değiştirilmiş dosya ile 21 ekleme ve 8 silme
  1. 21 8
      meetings_app/ViewController.swift

+ 21 - 8
meetings_app/ViewController.swift

@@ -1095,9 +1095,17 @@ private extension ViewController {
         premiumUpgradeRatingPromptWorkItem?.cancel()
         refreshPaywallStoreUI()
         refreshScheduleCardsForPremiumStateChange()
+
+        pageCache[.joinMeetings] = nil
+        if selectedSidebarPage == .joinMeetings {
+            showSidebarPage(.joinMeetings)
+        }
+
         if !hadPremiumAccess && hasPremiumAccess {
-            Task { [weak self] in
-                await self?.loadSchedule()
+            if selectedSidebarPage != .joinMeetings {
+                Task { [weak self] in
+                    await self?.loadSchedule()
+                }
             }
             // Skip delayed review prompt during initial launch entitlement sync.
             // We only want this after a real in-session upgrade.
@@ -1215,8 +1223,10 @@ private extension ViewController {
     }
 
     private func refreshScheduleCardsForPremiumStateChange() {
-        guard let stack = scheduleCardsStack else { return }
-        renderScheduleCards(into: stack, meetings: displayedScheduleMeetings)
+        if let stack = scheduleCardsStack {
+            renderScheduleCards(into: stack, meetings: displayedScheduleMeetings)
+        }
+        applySchedulePageFiltersAndRender()
     }
 
     private func refreshSidebarPremiumButton() {
@@ -4773,10 +4783,13 @@ private extension ViewController {
     private func performGoogleSignOut() {
         do {
             try googleOAuth.signOut()
-            applyGoogleProfile(nil)
-            scheduleDateHeadingLabel?.stringValue = "Connect Google to see meetings"
-            if let stack = scheduleCardsStack {
-                renderScheduleCards(into: stack, meetings: [])
+            pageCache[.photo] = nil
+            if selectedSidebarPage == .photo {
+                showSidebarPage(.photo)
+            } else {
+                Task { [weak self] in
+                    await self?.loadSchedule()
+                }
             }
         } catch {
             showSimpleError("Couldn’t logout Google account.", error: error)