diff --git a/Shared/HealthKitManager.swift b/Shared/HealthKitManager.swift index 6021671..7a5c787 100644 --- a/Shared/HealthKitManager.swift +++ b/Shared/HealthKitManager.swift @@ -126,25 +126,36 @@ class HealthKitManager: ObservableObject { return } + // Create all samples upfront + let samples: [HKStateOfMind] = validEntries.map { entry in + HKStateOfMind( + date: entry.forDate, + kind: .dailyMood, + valence: moodToValence(entry.mood), + labels: labelsForMood(entry.mood), + associations: [.currentEvents] + ) + } + + // Save in batches for better performance + let batchSize = 100 var successCount = 0 var failCount = 0 - for (index, entry) in validEntries.enumerated() { + for batchStart in stride(from: 0, to: samples.count, by: batchSize) { + let batchEnd = min(batchStart + batchSize, samples.count) + let batch = Array(samples[batchStart.. 0 { - try? await Task.sleep(nanoseconds: 50_000_000) // 50ms - } } isSyncing = false