Przeglądaj źródła

Align Not Looping display threshold with the alarm if it is enabled

Jonas Björkert 1 rok temu
rodzic
commit
e8abd9976e
1 zmienionych plików z 37 dodań i 31 usunięć
  1. 37 31
      LoopFollow/Controllers/Nightscout/DeviceStatus.swift

+ 37 - 31
LoopFollow/Controllers/Nightscout/DeviceStatus.swift

@@ -39,41 +39,47 @@ extension MainViewController {
     }
     
     func evaluateNotLooping() {
-        if let statusStackView = LoopStatusLabel.superview as? UIStackView {
-            if ((TimeInterval(Date().timeIntervalSince1970) - UserDefaultsRepository.alertLastLoopTime.value) / 60) > 15 {
-                IsNotLooping = true
-                // Change the distribution to 'fill' to allow manual resizing of arranged subviews
-                statusStackView.distribution = .fill
-                
-                // Hide PredictionLabel and expand LoopStatusLabel to fill the entire stack view
-                PredictionLabel.isHidden = true
-                LoopStatusLabel.frame = CGRect(x: 0, y: 0, width: statusStackView.frame.width, height: statusStackView.frame.height)
-                
-                // Update LoopStatusLabel's properties to display Not Looping
-                LoopStatusLabel.textAlignment = .center
-                LoopStatusLabel.text = "⚠️ Not Looping!"
-                LoopStatusLabel.textColor = UIColor.systemYellow
-                LoopStatusLabel.font = UIFont.boldSystemFont(ofSize: 18)
-                
+        guard let statusStackView = LoopStatusLabel.superview as? UIStackView else { return }
+
+        let now = TimeInterval(Date().timeIntervalSince1970)
+        let lastLoopTime = UserDefaultsRepository.alertLastLoopTime.value
+        let isAlarmEnabled = UserDefaultsRepository.alertNotLoopingActive.value
+        let nonLoopingTimeThreshold: TimeInterval
+
+        if isAlarmEnabled {
+            nonLoopingTimeThreshold = Double(UserDefaultsRepository.alertNotLooping.value * 60)
+        } else {
+            nonLoopingTimeThreshold = 15 * 60
+        }
+
+        if IsNightscoutEnabled(), (now - lastLoopTime) >= nonLoopingTimeThreshold, lastLoopTime > 0 {
+            IsNotLooping = true
+            statusStackView.distribution = .fill
+
+            PredictionLabel.isHidden = true
+            LoopStatusLabel.frame = CGRect(x: 0, y: 0, width: statusStackView.frame.width, height: statusStackView.frame.height)
+
+            LoopStatusLabel.textAlignment = .center
+            LoopStatusLabel.text = "⚠️ Not Looping!"
+            LoopStatusLabel.textColor = UIColor.systemYellow
+            LoopStatusLabel.font = UIFont.boldSystemFont(ofSize: 18)
+
+        } else {
+            IsNotLooping = false
+            statusStackView.distribution = .fillEqually
+            PredictionLabel.isHidden = false
+
+            LoopStatusLabel.textAlignment = .right
+            LoopStatusLabel.font = UIFont.systemFont(ofSize: 17)
+
+            if UserDefaultsRepository.forceDarkMode.value {
+                LoopStatusLabel.textColor = UIColor.white
             } else {
-                IsNotLooping = false
-                // Restore the original distribution and visibility of labels
-                statusStackView.distribution = .fillEqually
-                PredictionLabel.isHidden = false
-                
-                // Reset LoopStatusLabel's properties
-                LoopStatusLabel.textAlignment = .right
-                LoopStatusLabel.font = UIFont.systemFont(ofSize: 17)
-
-                if UserDefaultsRepository.forceDarkMode.value {
-                    LoopStatusLabel.textColor = UIColor.white
-                } else {
-                    LoopStatusLabel.textColor = UIColor.black
-                }
+                LoopStatusLabel.textColor = UIColor.black
             }
         }
     }
-        
+
     // NS Device Status Response Processor
     func updateDeviceStatusDisplay(jsonDeviceStatus: [[String:AnyObject]]) {
         infoManager.clearInfoData(types: [.iob, .cob, .override, .battery, .pump, .target, .isf, .carbRatio, .updated, .recBolus, .tdd])