Przeglądaj źródła

SAGE and CAGE alerts

Jon Fawcett 6 lat temu
rodzic
commit
2e274ed2cd

+ 37 - 10
LoopFollow/Controllers/MainViewController.swift

@@ -505,6 +505,7 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
                                 .withTime,
                                 .withDashSeparatorInDate,
                                 .withColonSeparatorInTime]
+        UserDefaultsRepository.alertCageInsertTime.value = formatter.date(from: (lastCageString))?.timeIntervalSince1970 as! TimeInterval
         if let cageTime = formatter.date(from: (lastCageString))?.timeIntervalSince1970 {
             let now = NSDate().timeIntervalSince1970
             let secondsAgo = now - cageTime
@@ -580,9 +581,10 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
                              .withTime,
                              .withDashSeparatorInDate,
                              .withColonSeparatorInTime]
-        if let cageTime = formatter.date(from: (lastSageString as! String))?.timeIntervalSince1970 {
+        UserDefaultsRepository.alertSageInsertTime.value = formatter.date(from: (lastSageString))?.timeIntervalSince1970 as! TimeInterval
+        if let sageTime = formatter.date(from: (lastSageString as! String))?.timeIntervalSince1970 {
             let now = NSDate().timeIntervalSince1970
-            let secondsAgo = now - cageTime
+            let secondsAgo = now - sageTime
             let days = 24 * 60 * 60
 
             let formatter = DateComponentsFormatter()
@@ -1028,16 +1030,41 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
             
 
             
-        } else {
-            //check for missed reading alert
-            
-            if UserDefaultsRepository.alertMissedBolusActive.value && !UserDefaultsRepository.alertMissedReadingIsSnoozed.value && (Double(now - currentBGTime) >= Double(UserDefaultsRepository.alertMissedReading.value * 60)) {
-                AlarmSound.whichAlarm = "Missed Reading Alert"
-                    triggerAlarm()
-                    return
-                }
         }
         
+        // These only get checked and fire if a BG reading doesn't fire
+        //check for missed reading alert
+        if UserDefaultsRepository.alertMissedBolusActive.value && !UserDefaultsRepository.alertMissedReadingIsSnoozed.value && (Double(now - currentBGTime) >= Double(UserDefaultsRepository.alertMissedReading.value * 60)) {
+            AlarmSound.whichAlarm = "Missed Reading Alert"
+                triggerAlarm()
+                return
+        }
+        
+        // Check Sage
+        if UserDefaultsRepository.alertSAGEActive.value {
+            var insertTime = Double(UserDefaultsRepository.alertSageInsertTime.value)
+            var alertDistance = Double(UserDefaultsRepository.alertSAGE.value * 60 * 60)
+            var delta = now - insertTime
+            var tenDays = 10 * 24 * 60 * 60
+            if Double(tenDays) - Double(delta) <= alertDistance {
+                AlarmSound.whichAlarm = "Sensor Change Alert"
+                triggerAlarm()
+                return
+            }
+        }
+        
+        // Check Cage
+        if UserDefaultsRepository.alertCAGEActive.value {
+            var insertTime = Double(UserDefaultsRepository.alertCageInsertTime.value)
+            var alertDistance = Double(UserDefaultsRepository.alertCAGE.value * 60 * 60)
+            var delta = now - insertTime
+            var tenDays = 3 * 24 * 60 * 60
+            if Double(tenDays) - Double(delta) <= alertDistance {
+                AlarmSound.whichAlarm = "Pump Change Alert"
+                triggerAlarm()
+                return
+            }
+        }
         
     }
     

+ 13 - 1
LoopFollow/Controllers/SnoozeViewController.swift

@@ -100,7 +100,19 @@ class SnoozeViewController: UIViewController {
            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
            alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: true)
            alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(UserDefaultsRepository.alertMissedReadingSnooze.value * 60)))
-       }
+       }  else if AlarmSound.whichAlarm == "Sensor Change Alert" {
+                UserDefaultsRepository.alertSAGEIsSnoozed.value = true
+                UserDefaultsRepository.alertSAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(UserDefaultsRepository.alertSAGESnooze.value * 60 * 60))
+                guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+                alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: true)
+                alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(UserDefaultsRepository.alertSAGESnooze.value * 60 * 60)))
+        } else if AlarmSound.whichAlarm == "Pump Change Alert" {
+                       UserDefaultsRepository.alertCAGEIsSnoozed.value = true
+                       UserDefaultsRepository.alertCAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(UserDefaultsRepository.alertCAGESnooze.value * 60 * 60))
+                       guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+                       alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: true)
+                       alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(UserDefaultsRepository.alertCAGESnooze.value * 60 * 60)))
+                   }
     }
     
     override func viewDidLoad() {

+ 4 - 0
LoopFollow/repository/UserDefaults.swift

@@ -34,6 +34,10 @@ class UserDefaultsRepository {
     
     
     // Alerts
+    static let alertCageInsertTime = UserDefaultsValue<TimeInterval>(key: "alertCageInsertTime", default: 0)
+    static let alertSageInsertTime = UserDefaultsValue<TimeInterval>(key: "alertSageInsertTime", default: 0)
+    
+    
     static let alertSnoozeAllTime = UserDefaultsValue<Date?>(key: "alertSnoozeAllTime", default: nil)
     static let alertSnoozeAllIsSnoozed = UserDefaultsValue<Bool>(key: "alertSnoozeAllIsSnoozed", default: false)