chore: commit all pending changes
This commit is contained in:
@@ -18,6 +18,9 @@ struct SportsTimeApp: App {
|
||||
private var transactionListener: Task<Void, Never>?
|
||||
|
||||
init() {
|
||||
// Configure sync manager immediately so push/background triggers can sync.
|
||||
BackgroundSyncManager.shared.configure(with: sharedModelContainer)
|
||||
|
||||
// Register background tasks BEFORE app finishes launching
|
||||
// This must happen synchronously in init or applicationDidFinishLaunching
|
||||
BackgroundSyncManager.shared.registerTasks()
|
||||
@@ -181,6 +184,9 @@ struct BootstrappedContentView: View {
|
||||
// 4. Load data from SwiftData into memory
|
||||
print("🚀 [BOOT] Step 4: Loading initial data from SwiftData...")
|
||||
await AppDataProvider.shared.loadInitialData()
|
||||
if let loadError = AppDataProvider.shared.error {
|
||||
throw loadError
|
||||
}
|
||||
print("🚀 [BOOT] Loaded \(AppDataProvider.shared.teams.count) teams")
|
||||
print("🚀 [BOOT] Loaded \(AppDataProvider.shared.stadiums.count) stadiums")
|
||||
|
||||
@@ -207,10 +213,15 @@ struct BootstrappedContentView: View {
|
||||
// 9. Schedule background tasks for future syncs
|
||||
BackgroundSyncManager.shared.scheduleAllTasks()
|
||||
|
||||
// 9b. Ensure CloudKit subscriptions exist for push-driven sync.
|
||||
Task(priority: .utility) {
|
||||
await BackgroundSyncManager.shared.ensureCanonicalSubscriptions()
|
||||
}
|
||||
|
||||
// 10. Background: Try to refresh from CloudKit (non-blocking)
|
||||
print("🚀 [BOOT] Step 10: Starting background CloudKit sync...")
|
||||
Task.detached(priority: .background) {
|
||||
await self.performBackgroundSync(context: context)
|
||||
Task(priority: .background) {
|
||||
await self.performBackgroundSync(context: self.modelContainer.mainContext)
|
||||
await MainActor.run {
|
||||
self.hasCompletedInitialSync = true
|
||||
}
|
||||
@@ -227,9 +238,16 @@ struct BootstrappedContentView: View {
|
||||
let log = SyncLogger.shared
|
||||
log.log("🔄 [SYNC] Starting background sync...")
|
||||
|
||||
// Reset stale syncInProgress flag (in case app was killed mid-sync)
|
||||
// Only reset stale syncInProgress flags; do not clobber an actively running sync.
|
||||
let syncState = SyncState.current(in: context)
|
||||
if syncState.syncInProgress {
|
||||
let staleSyncTimeout: TimeInterval = 15 * 60
|
||||
if let lastAttempt = syncState.lastSyncAttempt,
|
||||
Date().timeIntervalSince(lastAttempt) < staleSyncTimeout {
|
||||
log.log("ℹ️ [SYNC] Sync already in progress; skipping duplicate trigger")
|
||||
return
|
||||
}
|
||||
|
||||
log.log("⚠️ [SYNC] Resetting stale syncInProgress flag")
|
||||
syncState.syncInProgress = false
|
||||
try? context.save()
|
||||
|
||||
Reference in New Issue
Block a user