@@ -245,7 +245,7 @@ final class DeviceDataManager {
245245 basalProfile: UserDefaults . appGroup? . basalRateSchedule,
246246 insulinSensitivitySchedule: sensitivitySchedule,
247247 overrideHistory: overrideHistory,
248- lastPumpEventsReconciliation: pumpManager? . lastReconciliation ,
248+ lastPumpEventsReconciliation: pumpManager? . lastSync ,
249249 provenanceIdentifier: HKSource . default ( ) . bundleIdentifier
250250 )
251251
@@ -289,7 +289,7 @@ final class DeviceDataManager {
289289 lastLoopCompleted: statusExtensionManager. context? . lastLoopCompleted,
290290 basalDeliveryState: pumpManager? . status. basalDeliveryState,
291291 overrideHistory: overrideHistory,
292- lastPumpEventsReconciliation: pumpManager? . lastReconciliation ,
292+ lastPumpEventsReconciliation: pumpManager? . lastSync ,
293293 analyticsServicesManager: analyticsServicesManager,
294294 localCacheDuration: localCacheDuration,
295295 doseStore: doseStore,
@@ -431,7 +431,12 @@ final class DeviceDataManager {
431431 log. default ( " CGMManager:%{public}@ did update with %d values " , String ( describing: type ( of: manager) ) , values. count)
432432 loopManager. addGlucoseSamples ( values) { result in
433433 self . log. default ( " Asserting current pump data " )
434- self . pumpManager? . ensureCurrentPumpData ( completion: nil )
434+ self . pumpManager? . ensureCurrentPumpData ( completion: { ( lastSync) in
435+ if let lastSync = lastSync, Date ( ) . timeIntervalSince ( lastSync) < LoopCoreConstants . inputDataRecencyInterval {
436+ self . log. default ( " Pump data from %@ is fresh. Triggering loop() " , String ( describing: type ( of: self . pumpManager) ) )
437+ self . loopManager. loop ( )
438+ }
439+ } )
435440 if !values. isEmpty {
436441 DispatchQueue . main. async {
437442 self . cgmStalenessMonitor. cgmGlucoseSamplesAvailable ( values)
@@ -1004,11 +1009,11 @@ extension DeviceDataManager: PumpManagerDelegate {
10041009 loopManager. storeDosingDecision ( withDate: Date ( ) , withError: error)
10051010 }
10061011
1007- func pumpManager( _ pumpManager: PumpManager , hasNewPumpEvents events: [ NewPumpEvent ] , lastReconciliation : Date ? , completion: @escaping ( _ error: Error ? ) -> Void ) {
1012+ func pumpManager( _ pumpManager: PumpManager , hasNewPumpEvents events: [ NewPumpEvent ] , lastSync : Date ? , completion: @escaping ( _ error: Error ? ) -> Void ) {
10081013 dispatchPrecondition ( condition: . onQueue( queue) )
10091014 log. default ( " PumpManager:%{public}@ did read pump events " , String ( describing: type ( of: pumpManager) ) )
10101015
1011- loopManager. addPumpEvents ( events, lastReconciliation: lastReconciliation ) { ( error) in
1016+ loopManager. addPumpEvents ( events, lastReconciliation: lastSync ) { ( error) in
10121017 if let error = error {
10131018 self . log. error ( " Failed to addPumpEvents to DoseStore: %{public}@ " , String ( describing: error) )
10141019 }
@@ -1036,12 +1041,6 @@ extension DeviceDataManager: PumpManagerDelegate {
10361041 }
10371042 }
10381043
1039- func pumpManagerRecommendsLoop( _ pumpManager: PumpManager ) {
1040- dispatchPrecondition ( condition: . onQueue( queue) )
1041- log. default ( " PumpManager:%{public}@ recommends loop " , String ( describing: type ( of: pumpManager) ) )
1042- loopManager. loop ( )
1043- }
1044-
10451044 func startDateToFilterNewPumpEvents( for manager: PumpManager ) -> Date {
10461045 dispatchPrecondition ( condition: . onQueue( queue) )
10471046 return doseStore. pumpEventQueryAfterDate
0 commit comments