@@ -90,9 +90,9 @@ class DeviceDataManager: CarbStoreDelegate, TransmitterDelegate {
90
90
}
91
91
92
92
@objc private func receivedRileyLinkTimerTickNotification( note: NSNotification) {
93
- assertCurrentPumpData ( )
94
-
95
- backfillGlucoseFromShareIfNeeded ( )
93
+ backfillGlucoseFromShareIfNeeded ( ) {
94
+ self . assertCurrentPumpData ( )
95
+ }
96
96
}
97
97
98
98
func connectToRileyLink( device: RileyLinkDevice) {
@@ -414,8 +414,8 @@ class DeviceDataManager: CarbStoreDelegate, TransmitterDelegate {
414
414
415
415
func transmitter( transmitter: Transmitter, didError error: ErrorType) {
416
416
logger. addMessage ( [
417
- " error " : " \( error) " ,
418
- " collectedAt " : NSDateFormatter . ISO8601StrictDateFormatter ( ) . stringFromDate ( NSDate ( ) )
417
+ " error " : " \( error) " ,
418
+ " collectedAt " : NSDateFormatter . ISO8601StrictDateFormatter ( ) . stringFromDate ( NSDate ( ) )
419
419
] , toCollection: " g5 "
420
420
)
421
421
@@ -466,34 +466,47 @@ class DeviceDataManager: CarbStoreDelegate, TransmitterDelegate {
466
466
var latestGlucoseMessage: GlucoseRxMessage ?
467
467
468
468
/**
469
- Attempts to backfill glucose data from the share servers if the G5 connection hasn't been established.
469
+ Attempts to backfill glucose data from the share servers if a G5 connection hasn't been established.
470
+
471
+ - parameter completion: An optional closure called after the command is complete.
470
472
*/
471
- private func backfillGlucoseFromShareIfNeeded( ) {
472
- if latestGlucoseMessage == nil ,
473
- let shareClient = remoteDataManager. shareClient, glucoseStore = glucoseStore
474
- {
475
- // Load glucose from Share if our xDripG5 connection hasn't started
476
- shareClient. fetchLast ( 1 ) { ( error, glucose) in
477
- if let error = error {
478
- self . logger. addError ( error, fromSource: " ShareClient " )
479
- }
473
+ private func backfillGlucoseFromShareIfNeeded( complet ion complet ion: ( ( ) -> Void ) ? = nil ) {
474
+ // We should have no G5 data, and a configured ShareClient and GlucoseStore.
475
+ guard latestGlucoseMessage == nil , let shareClient = remoteDataManager. shareClient, glucoseStore = glucoseStore else {
476
+ completion ? ( )
477
+ return
478
+ }
480
479
481
- guard let glucose = glucose? . first else {
482
- return
483
- }
480
+ // If our last glucose was less than 4 minutes ago, don't fetch.
481
+ if let latestGlucose = glucoseStore. latestGlucose where latestGlucose. startDate. timeIntervalSinceNow <= - NSTimeInterval( minutes: 4 ) {
482
+ completion ? ( )
483
+ return
484
+ }
484
485
485
- // Ignore glucose values that are less than a minute newer than our previous value
486
- if let latestGlucose = glucoseStore . latestGlucose where latestGlucose . startDate . timeIntervalSinceDate ( glucose . startDate ) > - NSTimeInterval ( minutes : 1 ) {
487
- return
488
- }
486
+ shareClient . fetchLast ( 1 ) { ( error , glucose) in
487
+ if let error = error {
488
+ self . logger . addError ( error , fromSource : " ShareClient " )
489
+ }
489
490
490
- glucoseStore . addGlucose ( glucose. quantity , date : glucose. startDate , displayOnly : false , device : nil ) { ( _ , value , error ) -> Void in
491
- if let error = error {
492
- self . logger . addError ( error , fromSource : " GlucoseStore " )
493
- }
491
+ guard let glucose = glucose? . first else {
492
+ completion ? ( )
493
+ return
494
+ }
494
495
495
- NSNotificationCenter . defaultCenter ( ) . postNotificationName ( self . dynamicType. GlucoseUpdatedNotification, object: self )
496
+ // Ignore glucose values that are less than a minute newer than our previous value
497
+ if let latestGlucose = glucoseStore. latestGlucose where latestGlucose. startDate. timeIntervalSinceDate ( glucose. startDate) > - NSTimeInterval( minutes: 1 ) {
498
+ completion ? ( )
499
+ return
500
+ }
501
+
502
+ glucoseStore. addGlucose ( glucose. quantity, date: glucose. startDate, displayOnly: false , device: nil ) { ( _, value, error) -> Void in
503
+ if let error = error {
504
+ self . logger. addError ( error, fromSource: " GlucoseStore " )
496
505
}
506
+
507
+ NSNotificationCenter . defaultCenter ( ) . postNotificationName ( self . dynamicType. GlucoseUpdatedNotification, object: self )
508
+
509
+ completion ? ( )
497
510
}
498
511
}
499
512
}
0 commit comments