Skip to content

Commit bea91f0

Browse files
authored
Adding CGM Event Store (#2071)
1 parent 232b21d commit bea91f0

File tree

5 files changed

+88
-125
lines changed

5 files changed

+88
-125
lines changed

Loop/Managers/DeviceDataManager.swift

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ final class DeviceDataManager {
157157

158158
let glucoseStore: GlucoseStore
159159

160+
let cgmEventStore: CgmEventStore
161+
160162
private let cacheStore: PersistenceController
161163

162164
let dosingDecisionStore: DosingDecisionStore
@@ -337,11 +339,13 @@ final class DeviceDataManager {
337339

338340
cgmStalenessMonitor = CGMStalenessMonitor()
339341
cgmStalenessMonitor.delegate = glucoseStore
342+
343+
cgmEventStore = CgmEventStore(cacheStore: cacheStore, cacheLength: localCacheDuration)
344+
345+
dosingDecisionStore = DosingDecisionStore(store: cacheStore, expireAfter: localCacheDuration)
340346

341-
self.dosingDecisionStore = DosingDecisionStore(store: cacheStore, expireAfter: localCacheDuration)
342-
343-
self.cgmHasValidSensorSession = false
344-
self.pumpIsAllowingAutomation = true
347+
cgmHasValidSensorSession = false
348+
pumpIsAllowingAutomation = true
345349
self.automaticDosingStatus = automaticDosingStatus
346350

347351
// HealthStorePreferredGlucoseUnitDidChange will be notified once the user completes the health access form. Set to .milligramsPerDeciliter until then
@@ -405,6 +409,7 @@ final class DeviceDataManager {
405409
doseStore: doseStore,
406410
dosingDecisionStore: dosingDecisionStore,
407411
glucoseStore: glucoseStore,
412+
cgmEventStore: cgmEventStore,
408413
settingsStore: settingsManager.settingsStore,
409414
overrideHistory: overrideHistory,
410415
insulinDeliveryStore: doseStore.insulinDeliveryStore
@@ -435,6 +440,7 @@ final class DeviceDataManager {
435440
doseStore.delegate = self
436441
dosingDecisionStore.delegate = self
437442
glucoseStore.delegate = self
443+
cgmEventStore.delegate = self
438444
doseStore.insulinDeliveryStore.delegate = self
439445
remoteDataServicesManager.delegate = self
440446

@@ -934,6 +940,16 @@ extension DeviceDataManager: CGMManagerDelegate {
934940
}
935941
}
936942

943+
func cgmManager(_ manager: LoopKit.CGMManager, hasNew events: [PersistedCgmEvent]) {
944+
Task {
945+
do {
946+
try await cgmEventStore.add(events: events)
947+
} catch {
948+
self.log.error("Error storing cgm events: %{public}@", error.localizedDescription)
949+
}
950+
}
951+
}
952+
937953
func startDateToFilterNewData(for manager: CGMManager) -> Date? {
938954
dispatchPrecondition(condition: .onQueue(queue))
939955
return glucoseStore.latestGlucose?.startDate
@@ -1191,60 +1207,56 @@ extension DeviceDataManager: PumpManagerOnboardingDelegate {
11911207

11921208
// MARK: - AlertStoreDelegate
11931209
extension DeviceDataManager: AlertStoreDelegate {
1194-
11951210
func alertStoreHasUpdatedAlertData(_ alertStore: AlertStore) {
1196-
remoteDataServicesManager.alertStoreHasUpdatedAlertData(alertStore)
1211+
remoteDataServicesManager.triggerUpload(for: .alert)
11971212
}
1198-
11991213
}
12001214

12011215
// MARK: - CarbStoreDelegate
12021216
extension DeviceDataManager: CarbStoreDelegate {
1203-
12041217
func carbStoreHasUpdatedCarbData(_ carbStore: CarbStore) {
1205-
remoteDataServicesManager.carbStoreHasUpdatedCarbData(carbStore)
1218+
remoteDataServicesManager.triggerUpload(for: .carb)
12061219
}
12071220

12081221
func carbStore(_ carbStore: CarbStore, didError error: CarbStore.CarbStoreError) {}
1209-
12101222
}
12111223

12121224
// MARK: - DoseStoreDelegate
12131225
extension DeviceDataManager: DoseStoreDelegate {
1214-
12151226
func doseStoreHasUpdatedPumpEventData(_ doseStore: DoseStore) {
1216-
remoteDataServicesManager.doseStoreHasUpdatedPumpEventData(doseStore)
1227+
remoteDataServicesManager.triggerUpload(for: .pumpEvent)
12171228
}
1218-
12191229
}
12201230

12211231
// MARK: - DosingDecisionStoreDelegate
12221232
extension DeviceDataManager: DosingDecisionStoreDelegate {
1223-
12241233
func dosingDecisionStoreHasUpdatedDosingDecisionData(_ dosingDecisionStore: DosingDecisionStore) {
1225-
remoteDataServicesManager.dosingDecisionStoreHasUpdatedDosingDecisionData(dosingDecisionStore)
1234+
remoteDataServicesManager.triggerUpload(for: .dosingDecision)
12261235
}
1227-
12281236
}
12291237

12301238
// MARK: - GlucoseStoreDelegate
12311239
extension DeviceDataManager: GlucoseStoreDelegate {
1232-
12331240
func glucoseStoreHasUpdatedGlucoseData(_ glucoseStore: GlucoseStore) {
1234-
remoteDataServicesManager.glucoseStoreHasUpdatedGlucoseData(glucoseStore)
1241+
remoteDataServicesManager.triggerUpload(for: .glucose)
12351242
}
1236-
12371243
}
12381244

12391245
// MARK: - InsulinDeliveryStoreDelegate
12401246
extension DeviceDataManager: InsulinDeliveryStoreDelegate {
1241-
12421247
func insulinDeliveryStoreHasUpdatedDoseData(_ insulinDeliveryStore: InsulinDeliveryStore) {
1243-
remoteDataServicesManager.insulinDeliveryStoreHasUpdatedDoseData(insulinDeliveryStore)
1248+
remoteDataServicesManager.triggerUpload(for: .dose)
12441249
}
1250+
}
12451251

1252+
// MARK: - CgmEventStoreDelegate
1253+
extension DeviceDataManager: CgmEventStoreDelegate {
1254+
func cgmEventStoreHasUpdatedData(_ cgmEventStore: LoopKit.CgmEventStore) {
1255+
remoteDataServicesManager.triggerUpload(for: .cgmEvent)
1256+
}
12461257
}
12471258

1259+
12481260
// MARK: - TestingPumpManager
12491261
extension DeviceDataManager {
12501262
func deleteTestingPumpData(completion: ((Error?) -> Void)? = nil) {

Loop/Managers/LoopAppManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ extension LoopAppManager: TemporaryScheduleOverrideHistoryDelegate {
603603
func temporaryScheduleOverrideHistoryDidUpdate(_ history: TemporaryScheduleOverrideHistory) {
604604
UserDefaults.appGroup?.overrideHistory = history
605605

606-
deviceDataManager.remoteDataServicesManager.temporaryScheduleOverrideHistoryDidUpdate()
606+
deviceDataManager.remoteDataServicesManager.triggerUpload(for: .overrides)
607607
}
608608
}
609609

0 commit comments

Comments
 (0)