Просмотр исходного кода

Avoid repetition of the same rec bolus alarm

Jonas Björkert 1 год назад
Родитель
Сommit
cb1fb081ab
2 измененных файлов с 28 добавлено и 6 удалено
  1. 27 6
      LoopFollow/Controllers/Alarms.swift
  2. 1 0
      LoopFollow/Storage/Observable.swift

+ 27 - 6
LoopFollow/Controllers/Alarms.swift

@@ -507,16 +507,37 @@ extension MainViewController {
             }
         }
 
-        if UserDefaultsRepository.alertRecBolusActive.value && !UserDefaultsRepository.alertRecBolusIsSnoozed.value {
+        UserDefaultsRepository.deviceRecBolus.value = 3
+
+        if UserDefaultsRepository.alertRecBolusActive.value,
+           !UserDefaultsRepository.alertRecBolusIsSnoozed.value
+        {
             let currentRecBolus = UserDefaultsRepository.deviceRecBolus.value
-            let alertAtRecBolus = Double(UserDefaultsRepository.alertRecBolusLevel.value)
+            let alertAtRecBolus = UserDefaultsRepository.alertRecBolusLevel.value
 
             if currentRecBolus >= alertAtRecBolus {
-                AlarmSound.whichAlarm = "Rec. Bolus"
+                if Observable.shared.lastRecBolusTriggered.value != currentRecBolus {
+                    AlarmSound.whichAlarm = "Rec. Bolus"
 
-                if UserDefaultsRepository.alertRecBolusRepeat.value { numLoops = -1 }
-                triggerAlarm(sound: UserDefaultsRepository.alertRecBolusSound.value, snooozedBGReadingTime: nil, overrideVolume: UserDefaultsRepository.overrideSystemOutputVolume.value, numLoops: numLoops, snoozeTime: UserDefaultsRepository.alertRecBolusSnooze.value, snoozeIncrement: 5, audio: true)
-                return
+                    if UserDefaultsRepository.alertRecBolusRepeat.value {
+                        numLoops = -1
+                    }
+
+                    triggerAlarm(
+                        sound: UserDefaultsRepository.alertRecBolusSound.value,
+                        snooozedBGReadingTime: nil,
+                        overrideVolume: UserDefaultsRepository.overrideSystemOutputVolume.value,
+                        numLoops: numLoops,
+                        snoozeTime: UserDefaultsRepository.alertRecBolusSnooze.value,
+                        snoozeIncrement: 5,
+                        audio: true
+                    )
+
+                    Observable.shared.lastRecBolusTriggered.value = currentRecBolus
+                    return
+                }
+            } else {
+                Observable.shared.lastRecBolusTriggered.value = nil
             }
         }
 

+ 1 - 0
LoopFollow/Storage/Observable.swift

@@ -15,6 +15,7 @@ class Observable {
     var tempTarget = ObservableValue<HKQuantity?>(default: nil)
     var override = ObservableValue<String?>(default: nil)
     var isLastDeviceStatusSuggested = ObservableValue<Bool>(default: false)
+    var lastRecBolusTriggered = ObservableValue<Double?>(default: nil)
 
     private init() {}
 }