Преглед изворни кода

Add: Low alerts ignore 0 BG values caused by some Dex errors.

Jon Fawcett пре 4 година
родитељ
комит
3dd4b4036d

+ 8 - 1
LoopFollow/Controllers/Alarms.swift

@@ -28,6 +28,11 @@ extension MainViewController {
         let currentBG = bgs[bgs.count - 1].sgv
         let lastBG = bgs[bgs.count - 2].sgv
         
+        var skipZero = false
+        if UserDefaultsRepository.alertIgnoreZero.value && currentBG == 0 {
+            skipZero = true
+        }
+        
         var deltas: [Int] = []
         if bgs.count > 3 {
             deltas.append(bgs[bgs.count - 1].sgv - bgs[bgs.count - 2].sgv)
@@ -153,7 +158,8 @@ extension MainViewController {
                 }
             }
             if UserDefaultsRepository.alertUrgentLowActive.value && !UserDefaultsRepository.alertUrgentLowIsSnoozed.value &&
-                (Float(currentBG) <= UserDefaultsRepository.alertUrgentLowBG.value || predictiveTrigger) {
+                (Float(currentBG) <= UserDefaultsRepository.alertUrgentLowBG.value || predictiveTrigger)
+                && skipZero == false {
                 // Separating this makes it so the low or drop alerts won't trigger if they already snoozed the urgent low
                 if !UserDefaultsRepository.alertUrgentLowIsSnoozed.value {
                     
@@ -186,6 +192,7 @@ extension MainViewController {
             if UserDefaultsRepository.alertLowActive.value &&
                 !UserDefaultsRepository.alertUrgentLowIsSnoozed.value &&
                 !UserDefaultsRepository.alertLowIsSnoozed.value &&
+                skipZero == false &&
                 (Float(currentBG) <= UserDefaultsRepository.alertLowBG.value &&
                  (Float(persistentLowBG) <= UserDefaultsRepository.alertLowBG.value || Float(currentBG) <= persistentLowTriggerImmediatelyBG)
                 )

+ 7 - 0
LoopFollow/ViewControllers/AlarmViewController.swift

@@ -3196,6 +3196,13 @@ class AlarmViewController: FormViewController {
                       guard let value = row.value else { return }
                       UserDefaultsRepository.forcedOutputVolume.value = Float(value)
               }
+            <<< SwitchRow("alertIgnoreZero"){ row in
+                row.title = "Ignore Zero BG"
+                row.value = UserDefaultsRepository.alertIgnoreZero.value
+            }.onChange { [weak self] row in
+                        guard let value = row.value else { return }
+                        UserDefaultsRepository.alertIgnoreZero.value = value
+                }
             
              +++ Section(header: "Night Time Settings", footer: "Night time hours are used to differ how alerts are managed during the day and at night.  For instance, automatically snooze, at night time, non-critical alerts that you do not wish to be awakened for such as a sensor change pre-alert.")  { row in
                 row.tag = "quietHourSection"

+ 2 - 0
LoopFollow/repository/UserDefaults.swift

@@ -119,6 +119,8 @@ class UserDefaultsRepository {
     
     static let snoozedBGReadingTime = UserDefaultsValue<TimeInterval?>(key: "snoozedBGReadingTime", default: 0)
     
+    static let alertIgnoreZero = UserDefaultsValue<Bool>(key: "alertIgnoreZero", default: true)
+    
     static let alertCageInsertTime = UserDefaultsValue<TimeInterval>(key: "alertCageInsertTime", default: 0)
     static let alertSageInsertTime = UserDefaultsValue<TimeInterval>(key: "alertSageInsertTime", default: 0)