@@ -157,6 +157,8 @@ final class DeviceDataManager {
157
157
158
158
let glucoseStore : GlucoseStore
159
159
160
+ let cgmEventStore : CgmEventStore
161
+
160
162
private let cacheStore : PersistenceController
161
163
162
164
let dosingDecisionStore : DosingDecisionStore
@@ -337,11 +339,13 @@ final class DeviceDataManager {
337
339
338
340
cgmStalenessMonitor = CGMStalenessMonitor ( )
339
341
cgmStalenessMonitor. delegate = glucoseStore
342
+
343
+ cgmEventStore = CgmEventStore ( cacheStore: cacheStore, cacheLength: localCacheDuration)
344
+
345
+ dosingDecisionStore = DosingDecisionStore ( store: cacheStore, expireAfter: localCacheDuration)
340
346
341
- self . dosingDecisionStore = DosingDecisionStore ( store: cacheStore, expireAfter: localCacheDuration)
342
-
343
- self . cgmHasValidSensorSession = false
344
- self . pumpIsAllowingAutomation = true
347
+ cgmHasValidSensorSession = false
348
+ pumpIsAllowingAutomation = true
345
349
self . automaticDosingStatus = automaticDosingStatus
346
350
347
351
// HealthStorePreferredGlucoseUnitDidChange will be notified once the user completes the health access form. Set to .milligramsPerDeciliter until then
@@ -405,6 +409,7 @@ final class DeviceDataManager {
405
409
doseStore: doseStore,
406
410
dosingDecisionStore: dosingDecisionStore,
407
411
glucoseStore: glucoseStore,
412
+ cgmEventStore: cgmEventStore,
408
413
settingsStore: settingsManager. settingsStore,
409
414
overrideHistory: overrideHistory,
410
415
insulinDeliveryStore: doseStore. insulinDeliveryStore
@@ -435,6 +440,7 @@ final class DeviceDataManager {
435
440
doseStore. delegate = self
436
441
dosingDecisionStore. delegate = self
437
442
glucoseStore. delegate = self
443
+ cgmEventStore. delegate = self
438
444
doseStore. insulinDeliveryStore. delegate = self
439
445
remoteDataServicesManager. delegate = self
440
446
@@ -934,6 +940,16 @@ extension DeviceDataManager: CGMManagerDelegate {
934
940
}
935
941
}
936
942
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
+
937
953
func startDateToFilterNewData( for manager: CGMManager ) -> Date ? {
938
954
dispatchPrecondition ( condition: . onQueue( queue) )
939
955
return glucoseStore. latestGlucose? . startDate
@@ -1191,60 +1207,56 @@ extension DeviceDataManager: PumpManagerOnboardingDelegate {
1191
1207
1192
1208
// MARK: - AlertStoreDelegate
1193
1209
extension DeviceDataManager : AlertStoreDelegate {
1194
-
1195
1210
func alertStoreHasUpdatedAlertData( _ alertStore: AlertStore ) {
1196
- remoteDataServicesManager. alertStoreHasUpdatedAlertData ( alertStore )
1211
+ remoteDataServicesManager. triggerUpload ( for : . alert )
1197
1212
}
1198
-
1199
1213
}
1200
1214
1201
1215
// MARK: - CarbStoreDelegate
1202
1216
extension DeviceDataManager : CarbStoreDelegate {
1203
-
1204
1217
func carbStoreHasUpdatedCarbData( _ carbStore: CarbStore ) {
1205
- remoteDataServicesManager. carbStoreHasUpdatedCarbData ( carbStore )
1218
+ remoteDataServicesManager. triggerUpload ( for : . carb )
1206
1219
}
1207
1220
1208
1221
func carbStore( _ carbStore: CarbStore , didError error: CarbStore . CarbStoreError ) { }
1209
-
1210
1222
}
1211
1223
1212
1224
// MARK: - DoseStoreDelegate
1213
1225
extension DeviceDataManager : DoseStoreDelegate {
1214
-
1215
1226
func doseStoreHasUpdatedPumpEventData( _ doseStore: DoseStore ) {
1216
- remoteDataServicesManager. doseStoreHasUpdatedPumpEventData ( doseStore )
1227
+ remoteDataServicesManager. triggerUpload ( for : . pumpEvent )
1217
1228
}
1218
-
1219
1229
}
1220
1230
1221
1231
// MARK: - DosingDecisionStoreDelegate
1222
1232
extension DeviceDataManager : DosingDecisionStoreDelegate {
1223
-
1224
1233
func dosingDecisionStoreHasUpdatedDosingDecisionData( _ dosingDecisionStore: DosingDecisionStore ) {
1225
- remoteDataServicesManager. dosingDecisionStoreHasUpdatedDosingDecisionData ( dosingDecisionStore )
1234
+ remoteDataServicesManager. triggerUpload ( for : . dosingDecision )
1226
1235
}
1227
-
1228
1236
}
1229
1237
1230
1238
// MARK: - GlucoseStoreDelegate
1231
1239
extension DeviceDataManager : GlucoseStoreDelegate {
1232
-
1233
1240
func glucoseStoreHasUpdatedGlucoseData( _ glucoseStore: GlucoseStore ) {
1234
- remoteDataServicesManager. glucoseStoreHasUpdatedGlucoseData ( glucoseStore )
1241
+ remoteDataServicesManager. triggerUpload ( for : . glucose )
1235
1242
}
1236
-
1237
1243
}
1238
1244
1239
1245
// MARK: - InsulinDeliveryStoreDelegate
1240
1246
extension DeviceDataManager : InsulinDeliveryStoreDelegate {
1241
-
1242
1247
func insulinDeliveryStoreHasUpdatedDoseData( _ insulinDeliveryStore: InsulinDeliveryStore ) {
1243
- remoteDataServicesManager. insulinDeliveryStoreHasUpdatedDoseData ( insulinDeliveryStore )
1248
+ remoteDataServicesManager. triggerUpload ( for : . dose )
1244
1249
}
1250
+ }
1245
1251
1252
+ // MARK: - CgmEventStoreDelegate
1253
+ extension DeviceDataManager : CgmEventStoreDelegate {
1254
+ func cgmEventStoreHasUpdatedData( _ cgmEventStore: LoopKit . CgmEventStore ) {
1255
+ remoteDataServicesManager. triggerUpload ( for: . cgmEvent)
1256
+ }
1246
1257
}
1247
1258
1259
+
1248
1260
// MARK: - TestingPumpManager
1249
1261
extension DeviceDataManager {
1250
1262
func deleteTestingPumpData( completion: ( ( Error ? ) -> Void ) ? = nil ) {
0 commit comments