فهرست منبع

Merge branch 'dev' into enacted-suggested

Jonas Björkert 1 سال پیش
والد
کامیت
3c9969031a

+ 28 - 10
LoopFollow/Controllers/Alarms.swift

@@ -507,16 +507,35 @@ extension MainViewController {
             }
         }
 
-        if UserDefaultsRepository.alertRecBolusActive.value && !UserDefaultsRepository.alertRecBolusIsSnoozed.value {
+        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 currentRecBolus > (Observable.shared.lastRecBolusTriggered.value ?? 0) {
+                    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
             }
         }
 
@@ -640,7 +659,7 @@ extension MainViewController {
         if !UserDefaultsRepository.alertAudioDuringPhone.value && isOnPhoneCall() { audioDuringCall = false }
         
         guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }
-        snoozer.updateDisplayWhenTriggered(bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString ?? "", deltaVal: Localizer.toDisplayUnits(latestDeltaString) ?? "", minAgoVal: latestMinAgoString ?? "", alertLabelVal: AlarmSound.whichAlarm)
+        snoozer.updateDisplayWhenTriggered(bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString ?? "", deltaVal: latestDeltaString, minAgoVal: latestMinAgoString ?? "", alertLabelVal: AlarmSound.whichAlarm)
         if audio && !UserDefaultsRepository.alertMuteAllIsMuted.value && audioDuringCall{
             AlarmSound.setSoundFile(str: sound)
             AlarmSound.play(overrideVolume: overrideVolume, numLoops: numLoops)
@@ -654,7 +673,7 @@ extension MainViewController {
         if !UserDefaultsRepository.alertAudioDuringPhone.value && isOnPhoneCall() { audioDuringCall = false }
         
         guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }
-        snoozer.updateDisplayWhenTriggered(bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString ?? "", deltaVal: Localizer.toDisplayUnits(latestDeltaString) ?? "", minAgoVal: latestMinAgoString ?? "", alertLabelVal: AlarmSound.whichAlarm)
+        snoozer.updateDisplayWhenTriggered(bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString ?? "", deltaVal: latestDeltaString, minAgoVal: latestMinAgoString ?? "", alertLabelVal: AlarmSound.whichAlarm)
         snoozer.SnoozeButton.isHidden = false
         snoozer.AlertLabel.isHidden = false
         snoozer.clockLabel.isHidden = true
@@ -687,7 +706,7 @@ extension MainViewController {
         
         AlarmSound.whichAlarm = "none"
         guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }
-        snoozer.updateDisplayWhenTriggered(bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString ?? "", deltaVal: Localizer.toDisplayUnits(latestDeltaString) ?? "", minAgoVal: latestMinAgoString ?? "", alertLabelVal: AlarmSound.whichAlarm)
+        snoozer.updateDisplayWhenTriggered(bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString ?? "", deltaVal: latestDeltaString, minAgoVal: latestMinAgoString ?? "", alertLabelVal: AlarmSound.whichAlarm)
         snoozer.SnoozeButton.isHidden = true
         snoozer.AlertLabel.isHidden = true
         if AlarmSound.isPlaying {
@@ -697,7 +716,6 @@ extension MainViewController {
     
     func clearOldSnoozes(){
         let date = Date()
-        let now = date.timeIntervalSince1970
         guard let alarms = ViewControllerManager.shared.alarmViewController else { return }
 
         if date > UserDefaultsRepository.alertSnoozeAllTime.value ?? date {

+ 6 - 7
LoopFollow/Controllers/Nightscout/BGData.swift

@@ -244,15 +244,14 @@ extension MainViewController {
             
             // Delta handling
             if deltaBG < 0 {
-                self.DeltaText.text = Localizer.toDisplayUnits(String(deltaBG))
-                snoozerDelta = Localizer.toDisplayUnits(String(deltaBG))
-                self.latestDeltaString = String(deltaBG)
+                self.latestDeltaString = Localizer.toDisplayUnits(String(deltaBG))
+
             } else {
-                self.DeltaText.text = "+" + Localizer.toDisplayUnits(String(deltaBG))
-                snoozerDelta = "+" + Localizer.toDisplayUnits(String(deltaBG))
-                self.latestDeltaString = "+" + String(deltaBG)
+                self.latestDeltaString = "+" + Localizer.toDisplayUnits(String(deltaBG))
             }
-            
+            self.DeltaText.text = self.latestDeltaString
+            snoozerDelta = self.latestDeltaString
+
             // Apply strikethrough to BGText based on the staleness of the data
             let bgTextStr = self.BGText.text ?? ""
             let attributeString = NSMutableAttributedString(string: bgTextStr)

+ 5 - 3
LoopFollow/Controllers/Nightscout/Treatments/Overrides.swift

@@ -56,12 +56,14 @@ extension MainViewController {
                 if (low == nil && high != nil) || (low != nil && high == nil) { return }
                 range = [low ?? 0, high ?? 0]
             }
-            
+
+            // Limit displayed override duration to 'Hours of Prediction' after current time
             var endDate = dateTimeStamp + duration
-/*            if endDate > maxEndDate {
+            if endDate > maxEndDate {
                 endDate = maxEndDate
+                duration = endDate - dateTimeStamp
             }
-*/
+
             if dateTimeStamp <= now && now < endDate {
                 activeOverrideNote = currentEntry["notes"] as? String
             }

+ 1 - 0
LoopFollow/Storage/Observable.swift

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

+ 1 - 1
LoopFollow/ViewControllers/MainViewController.swift

@@ -655,7 +655,7 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     {
         if UserDefaultsRepository.persistentNotification.value && bgTime > UserDefaultsRepository.persistentNotificationLastBGTime.value && bgData.count > 0 {
             guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }
-            snoozer.sendNotification(self, bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString, deltaVal: Localizer.toDisplayUnits(String(latestDeltaString)), minAgoVal: latestMinAgoString, alertLabelVal: "Latest BG")
+            snoozer.sendNotification(self, bgVal: Localizer.toDisplayUnits(String(bgData[bgData.count - 1].sgv)), directionVal: latestDirectionString, deltaVal: latestDeltaString, minAgoVal: latestMinAgoString, alertLabelVal: "Latest BG")
         }
     }