diff --git a/Andromida/App/State/RitualStore.swift b/Andromida/App/State/RitualStore.swift index b9cfa2b..619b6a4 100644 --- a/Andromida/App/State/RitualStore.swift +++ b/Andromida/App/State/RitualStore.swift @@ -173,13 +173,6 @@ final class RitualStore: RitualStoreProviding { refresh() } - /// Forces a refresh path intended for external sync probes (for example, - /// runtimes where remote change callbacks may be delayed while foregrounded). - func refreshFromExternalSyncProbe() { - modelContext = ModelContext(modelContainer) - refresh() - } - func ritualProgress(for ritual: Ritual) -> Double { let habits = ritual.habits guard !habits.isEmpty else { return 0 } diff --git a/Andromida/App/Views/RootView.swift b/Andromida/App/Views/RootView.swift index e39aae8..ac1cb07 100644 --- a/Andromida/App/Views/RootView.swift +++ b/Andromida/App/Views/RootView.swift @@ -11,7 +11,6 @@ struct RootView: View { @State private var analyticsPrewarmTask: Task? @State private var cloudKitFallbackRefreshTask: Task? @State private var aggressiveCloudKitRefreshTasks: [Task] = [] - @State private var macSyncSafetyNetTask: Task? @State private var isForegroundRefreshing = false @State private var isResumingFromBackground = false private let foregroundRefreshMinimumSeconds: TimeInterval = 0.15 @@ -137,14 +136,12 @@ struct RootView: View { ) scheduleAggressiveCloudKitRefreshes() scheduleCloudKitFallbackRefresh() - startMacSyncSafetyNetIfNeeded() } else if newPhase == .background { // Prepare for next resume isResumingFromBackground = true cloudKitFallbackRefreshTask?.cancel() aggressiveCloudKitRefreshTasks.forEach { $0.cancel() } aggressiveCloudKitRefreshTasks.removeAll() - macSyncSafetyNetTask?.cancel() } } .onChange(of: selectedTab) { _, _ in @@ -159,12 +156,7 @@ struct RootView: View { .onOpenURL { url in handleURL(url) } - .onAppear { - startMacSyncSafetyNetIfNeeded() - } .onDisappear { - macSyncSafetyNetTask?.cancel() - macSyncSafetyNetTask = nil aggressiveCloudKitRefreshTasks.forEach { $0.cancel() } aggressiveCloudKitRefreshTasks.removeAll() } @@ -250,23 +242,6 @@ struct RootView: View { } } - /// iOS-on-Mac can miss immediate remote push delivery while foregrounded. - /// Keep a lightweight active-phase polling safety net for CloudKit merges. - private func startMacSyncSafetyNetIfNeeded() { - let isMacRuntime = ProcessInfo.processInfo.isiOSAppOnMac || UIDevice.current.userInterfaceIdiom == .mac - guard isMacRuntime else { return } - guard scenePhase == .active else { return } - guard macSyncSafetyNetTask == nil else { return } - - macSyncSafetyNetTask = Task { @MainActor in - while !Task.isCancelled { - try? await Task.sleep(for: .seconds(3)) - guard !Task.isCancelled else { return } - guard scenePhase == .active else { continue } - store.refreshFromExternalSyncProbe() - } - } - } } #Preview {