diff --git a/LoopFollow/Controllers/Alarms.swift b/LoopFollow/Controllers/Alarms.swift index 123580d1..d710c3b5 100644 --- a/LoopFollow/Controllers/Alarms.swift +++ b/LoopFollow/Controllers/Alarms.swift @@ -509,9 +509,21 @@ extension MainViewController { } } + if UserDefaultsRepository.alertRecBolusActive.value && !UserDefaultsRepository.alertRecBolusIsSnoozed.value { + let currentRecBolus = UserDefaultsRepository.deviceRecBolus.value + let alertAtRecBolus = Double(UserDefaultsRepository.alertRecBolusLevel.value) + + if currentRecBolus >= alertAtRecBolus { + 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 + } + } + // still send persistent notification if no alarms trigger and persistent notification is on persistentNotification(bgTime: currentBGTime) - } func checkOverrideAlarms() @@ -773,7 +785,14 @@ extension MainViewController { alarms.reloadSnoozeTime(key: "alertBatterySnoozedTime", setNil: true) alarms.reloadIsSnoozed(key: "alertBatteryIsSnoozed", value: false) } - } + + if date > UserDefaultsRepository.alertRecBolusSnoozedTime.value ?? date { + UserDefaultsRepository.alertRecBolusSnoozedTime.setNil(key: "alertRecBolusSnoozedTime") + UserDefaultsRepository.alertRecBolusIsSnoozed.value = false + alarms.reloadSnoozeTime(key: "alertRecBolusSnoozedTime", setNil: true) + alarms.reloadIsSnoozed(key: "alertRecBolusIsSnoozed", value: false) + } + } func checkQuietHours() { if UserDefaultsRepository.quietHourStart.value == nil || UserDefaultsRepository.quietHourEnd.value == nil { return } diff --git a/LoopFollow/Controllers/Nightscout/DeviceStatus.swift b/LoopFollow/Controllers/Nightscout/DeviceStatus.swift index 836eca7d..c2e0b666 100644 --- a/LoopFollow/Controllers/Nightscout/DeviceStatus.swift +++ b/LoopFollow/Controllers/Nightscout/DeviceStatus.swift @@ -181,6 +181,7 @@ extension MainViewController { } if let recBolus = lastLoopRecord["recommendedBolus"] as? Double { tableData[8].value = String(format:"%.2fU", recBolus) + UserDefaultsRepository.deviceRecBolus.value = recBolus } if let loopStatus = lastLoopRecord["recommendedTempBasal"] as? [String:AnyObject] { if let tempBasalTime = formatter.date(from: (loopStatus["timestamp"] as! String))?.timeIntervalSince1970 { @@ -239,9 +240,16 @@ extension MainViewController { tableData[1].value = String(format:"%.0f", cobdata["COB"] as! Double) latestCOB = String(format:"%.0f", cobdata["COB"] as! Double) } - if let recbolusdata = lastLoopRecord["enacted"] as? [String:AnyObject] { - tableData[8].value = String(format:"%.2fU", recbolusdata["insulinReq"] as! Double) + if let recbolusdata = lastLoopRecord["enacted"] as? [String: AnyObject], + let insulinReq = recbolusdata["insulinReq"] as? Double { + tableData[8].value = String(format: "%.2fU", insulinReq) + UserDefaultsRepository.deviceRecBolus.value = insulinReq + } else { + tableData[8].value = "N/A" + UserDefaultsRepository.deviceRecBolus.value = 0 + print("Warning: Failed to extract insulinReq from recbolusdata.") } + if let autosensdata = lastLoopRecord["enacted"] as? [String:AnyObject] { let sens = autosensdata["sensitivityRatio"] as! Double * 100.0 tableData[11].value = String(format:"%.0f", sens) + "%" diff --git a/LoopFollow/ViewControllers/AlarmViewController.swift b/LoopFollow/ViewControllers/AlarmViewController.swift index 2f8cb675..2c15251d 100644 --- a/LoopFollow/ViewControllers/AlarmViewController.swift +++ b/LoopFollow/ViewControllers/AlarmViewController.swift @@ -252,7 +252,6 @@ class AlarmViewController: FormViewController { <<< SegmentedRow("bgAlerts"){ row in row.title = "" row.options = ["Urgent Low", "Low", "High", "Urgent High"] - // row.value = "Urgent Low" }.onChange { [weak self] row in guard let value = row.value else { return } let otherRow = self?.form.rowBy(tag: "bgExtraAlerts") as! SegmentedRow @@ -267,12 +266,14 @@ class AlarmViewController: FormViewController { let otherRow4 = self?.form.rowBy(tag: "otherAlerts3") as! SegmentedRow otherRow4.value = nil otherRow4.reload() + let otherRow5 = self?.form.rowBy(tag: "otherAlerts4") as! SegmentedRow + otherRow5.value = nil + otherRow5.reload() row.value = value } <<< SegmentedRow("bgExtraAlerts"){ row in row.title = "" row.options = ["No Readings", "Fast Drop", "Fast Rise", "Temporary"] - //row.value = "Missed Readings" }.onChange { [weak self] row in guard let value = row.value else { return } let otherRow = self?.form.rowBy(tag: "bgAlerts") as! SegmentedRow @@ -287,6 +288,9 @@ class AlarmViewController: FormViewController { let otherRow4 = self?.form.rowBy(tag: "otherAlerts3") as! SegmentedRow otherRow4.value = nil otherRow4.reload() + let otherRow5 = self?.form.rowBy(tag: "otherAlerts4") as! SegmentedRow + otherRow5.value = nil + otherRow5.reload() row.value = value } <<< SegmentedRow("otherAlerts"){ row in @@ -295,8 +299,6 @@ class AlarmViewController: FormViewController { if UserDefaultsRepository.url.value == "" { row.hidden = true } - - //row.value = "Not Looping" }.onChange { [weak self] row in guard let value = row.value else { return } let otherRow = self?.form.rowBy(tag: "bgExtraAlerts") as! SegmentedRow @@ -311,6 +313,9 @@ class AlarmViewController: FormViewController { let otherRow4 = self?.form.rowBy(tag: "otherAlerts3") as! SegmentedRow otherRow4.value = nil otherRow4.reload() + let otherRow5 = self?.form.rowBy(tag: "otherAlerts4") as! SegmentedRow + otherRow5.value = nil + otherRow5.reload() row.value = value } <<< SegmentedRow("otherAlerts2"){ row in @@ -319,7 +324,6 @@ class AlarmViewController: FormViewController { if UserDefaultsRepository.url.value == "" { row.hidden = true } - //row.value = "Not Looping" }.onChange { [weak self] row in guard let value = row.value else { return } let otherRow = self?.form.rowBy(tag: "bgExtraAlerts") as! SegmentedRow @@ -334,6 +338,9 @@ class AlarmViewController: FormViewController { let otherRow4 = self?.form.rowBy(tag: "otherAlerts3") as! SegmentedRow otherRow4.value = nil otherRow4.reload() + let otherRow5 = self?.form.rowBy(tag: "otherAlerts4") as! SegmentedRow + otherRow5.value = nil + otherRow5.reload() row.value = value } @@ -343,7 +350,6 @@ class AlarmViewController: FormViewController { if UserDefaultsRepository.url.value == "" { row.hidden = true } - //row.value = "Not Looping" }.onChange { [weak self] row in guard let value = row.value else { return } let otherRow = self?.form.rowBy(tag: "bgExtraAlerts") as! SegmentedRow @@ -358,10 +364,37 @@ class AlarmViewController: FormViewController { let otherRow4 = self?.form.rowBy(tag: "otherAlerts2") as! SegmentedRow otherRow4.value = nil otherRow4.reload() + let otherRow5 = self?.form.rowBy(tag: "otherAlerts4") as! SegmentedRow + otherRow5.value = nil + otherRow5.reload() row.value = value } - + <<< SegmentedRow("otherAlerts4"){ row in + row.title = "" + row.options = ["Rec. Bolus"] + if UserDefaultsRepository.url.value == "" { + row.hidden = true + } + }.onChange { [weak self] row in + guard let value = row.value else { return } + let otherRow = self?.form.rowBy(tag: "bgExtraAlerts") as! SegmentedRow + otherRow.value = nil + otherRow.reload() + let otherRow2 = self?.form.rowBy(tag: "bgAlerts") as! SegmentedRow + otherRow2.value = nil + otherRow2.reload() + let otherRow3 = self?.form.rowBy(tag: "otherAlerts") as! SegmentedRow + otherRow3.value = nil + otherRow3.reload() + let otherRow4 = self?.form.rowBy(tag: "otherAlerts2") as! SegmentedRow + otherRow4.value = nil + otherRow4.reload() + let otherRow5 = self?.form.rowBy(tag: "otherAlerts3") as! SegmentedRow + otherRow5.value = nil + otherRow5.reload() + row.value = value + } buildUrgentLow() buildLow() @@ -390,7 +423,8 @@ class AlarmViewController: FormViewController { buildIOB() buildCOB() buildBatteryAlarm() - + buildRecBolus() + buildSnoozeAll() buildAlarmSettings() @@ -3242,6 +3276,70 @@ class AlarmViewController: FormViewController { UserDefaultsRepository.alertBatteryRepeat.value = value } } + + func buildRecBolus(){ + form + +++ Section(header: "Rec. Bolus Alert", footer: "Activates a notification alert whenever recommended bolus is above a user-defined threshold, allowing for proactive manual bolusing.") { row in + row.hidden = "$otherAlerts4 != 'Rec. Bolus'" + } + <<< SwitchRow("alertRecBolusActive"){ row in + row.title = "Active" + row.value = UserDefaultsRepository.alertRecBolusActive.value + }.onChange { [weak self] row in + guard let value = row.value else { return } + UserDefaultsRepository.alertRecBolusActive.value = value + } + <<< StepperRow("alertRecBolusAt") { row in + row.title = "Rec. Bolus threshold" + row.cell.stepper.stepValue = 0.1 + row.cell.stepper.minimumValue = 0.1 + row.cell.stepper.maximumValue = 50 + row.value = Double(UserDefaultsRepository.alertRecBolusLevel.value) + row.displayValueFor = { value in + guard let value = value else { return nil } + return "\(Double(round(10*value)/10))" + } + }.onChange { [weak self] row in + guard let value = row.value else { return } + UserDefaultsRepository.alertRecBolusLevel.value = value + } + <<< StepperRow("alertRecBolusSnooze") { row in + row.title = "Default Snooze" + row.cell.stepper.stepValue = 5 + row.cell.stepper.minimumValue = 5 + row.cell.stepper.maximumValue = 60 + row.value = Double(UserDefaultsRepository.alertRecBolusSnooze.value) + row.displayValueFor = { value in + guard let value = value else { return nil } + return "\(Int(value))" + } + }.onChange { [weak self] row in + guard let value = row.value else { return } + UserDefaultsRepository.alertRecBolusSnooze.value = Int(value) + } + <<< PickerInputRow("alertRecBolusSound") { row in + row.title = "Sound" + row.options = soundFiles + row.value = UserDefaultsRepository.alertRecBolusSound.value + row.displayValueFor = { value in + guard let value = value else { return nil } + return "\(String(value.replacingOccurrences(of: "_", with: " ")))" + } + }.onChange { [weak self] row in + guard let value = row.value else { return } + UserDefaultsRepository.alertRecBolusSound.value = value + AlarmSound.setSoundFile(str: value) + AlarmSound.stop() + AlarmSound.playTest() + } + <<< SwitchRow("alertRecBolusRepeat"){ row in + row.title = "Repeat Sound" + row.value = UserDefaultsRepository.alertRecBolusRepeat.value + }.onChange { [weak self] row in + guard let value = row.value else { return } + UserDefaultsRepository.alertRecBolusRepeat.value = value + } + } func buildAlarmSettings() { form diff --git a/LoopFollow/ViewControllers/SnoozeViewController.swift b/LoopFollow/ViewControllers/SnoozeViewController.swift index eb0905be..a56e5a08 100644 --- a/LoopFollow/ViewControllers/SnoozeViewController.swift +++ b/LoopFollow/ViewControllers/SnoozeViewController.swift @@ -168,60 +168,67 @@ class SnoozeViewController: UIViewController, UNUserNotificationCenterDelegate { alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: true) alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))) } else if AlarmSound.whichAlarm == "Missed Reading Alert" { - UserDefaultsRepository.alertMissedReadingIsSnoozed.value = true - UserDefaultsRepository.alertMissedReadingSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)) - 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(snoozeForMinuteStepper.value * 60))) - } else if AlarmSound.whichAlarm == "Sensor Change Alert" { - UserDefaultsRepository.alertSAGEIsSnoozed.value = true - UserDefaultsRepository.alertSAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.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(snoozeForMinuteStepper.value * 60 * 60))) - } else if AlarmSound.whichAlarm == "Pump Change Alert" { - UserDefaultsRepository.alertCAGEIsSnoozed.value = true - UserDefaultsRepository.alertCAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.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(snoozeForMinuteStepper.value * 60 * 60))) - } else if AlarmSound.whichAlarm == "Not Looping Alert" { - UserDefaultsRepository.alertNotLoopingIsSnoozed.value = true - UserDefaultsRepository.alertNotLoopingSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)) - guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } - alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: true) - alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))) - } else if AlarmSound.whichAlarm == "Missed Bolus Alert" { - UserDefaultsRepository.alertMissedBolusIsSnoozed.value = true - UserDefaultsRepository.alertMissedBolusSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)) - guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } - alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: true) - alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))) - } else if AlarmSound.whichAlarm == "Low Insulin Alert" { - UserDefaultsRepository.alertPumpIsSnoozed.value = true - UserDefaultsRepository.alertPumpSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) - guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } - alarms.reloadIsSnoozed(key: "alertPumpIsSnoozed", value: true) - alarms.reloadSnoozeTime(key: "alertPumpSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) - } else if AlarmSound.whichAlarm == "IOB Alert" { - UserDefaultsRepository.alertIOBIsSnoozed.value = true - UserDefaultsRepository.alertIOBSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) - guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } - alarms.reloadIsSnoozed(key: "alertIOBIsSnoozed", value: true) - alarms.reloadSnoozeTime(key: "alertIOBSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) - } else if AlarmSound.whichAlarm == "COB Alert" { - UserDefaultsRepository.alertCOBIsSnoozed.value = true - UserDefaultsRepository.alertCOBSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) - guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } - alarms.reloadIsSnoozed(key: "alertCOBIsSnoozed", value: true) - alarms.reloadSnoozeTime(key: "alertCOBSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) - } else if AlarmSound.whichAlarm == "Low Battery" { - UserDefaultsRepository.alertBatteryIsSnoozed.value = true + UserDefaultsRepository.alertMissedReadingIsSnoozed.value = true + UserDefaultsRepository.alertMissedReadingSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)) + 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(snoozeForMinuteStepper.value * 60))) + } else if AlarmSound.whichAlarm == "Sensor Change Alert" { + UserDefaultsRepository.alertSAGEIsSnoozed.value = true + UserDefaultsRepository.alertSAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.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(snoozeForMinuteStepper.value * 60 * 60))) + } else if AlarmSound.whichAlarm == "Pump Change Alert" { + UserDefaultsRepository.alertCAGEIsSnoozed.value = true + UserDefaultsRepository.alertCAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.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(snoozeForMinuteStepper.value * 60 * 60))) + } else if AlarmSound.whichAlarm == "Not Looping Alert" { + UserDefaultsRepository.alertNotLoopingIsSnoozed.value = true + UserDefaultsRepository.alertNotLoopingSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)) + guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } + alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: true) + alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))) + } else if AlarmSound.whichAlarm == "Missed Bolus Alert" { + UserDefaultsRepository.alertMissedBolusIsSnoozed.value = true + UserDefaultsRepository.alertMissedBolusSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)) + guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } + alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: true) + alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))) + } else if AlarmSound.whichAlarm == "Low Insulin Alert" { + UserDefaultsRepository.alertPumpIsSnoozed.value = true + UserDefaultsRepository.alertPumpSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) + guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } + alarms.reloadIsSnoozed(key: "alertPumpIsSnoozed", value: true) + alarms.reloadSnoozeTime(key: "alertPumpSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) + } else if AlarmSound.whichAlarm == "IOB Alert" { + UserDefaultsRepository.alertIOBIsSnoozed.value = true + UserDefaultsRepository.alertIOBSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) + guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } + alarms.reloadIsSnoozed(key: "alertIOBIsSnoozed", value: true) + alarms.reloadSnoozeTime(key: "alertIOBSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) + } else if AlarmSound.whichAlarm == "COB Alert" { + UserDefaultsRepository.alertCOBIsSnoozed.value = true + UserDefaultsRepository.alertCOBSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) + guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } + alarms.reloadIsSnoozed(key: "alertCOBIsSnoozed", value: true) + alarms.reloadSnoozeTime(key: "alertCOBSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) + } else if AlarmSound.whichAlarm == "Low Battery" { + UserDefaultsRepository.alertBatteryIsSnoozed.value = true + + UserDefaultsRepository.alertBatterySnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) + guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } + alarms.reloadIsSnoozed(key: "alertBatteryIsSnoozed", value: true) + alarms.reloadSnoozeTime(key: "alertBatterySnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) + } else if AlarmSound.whichAlarm == "Rec. Bolus" { + UserDefaultsRepository.alertRecBolusIsSnoozed.value = true - UserDefaultsRepository.alertBatterySnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)) + UserDefaultsRepository.alertRecBolusSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)) guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return } - alarms.reloadIsSnoozed(key: "alertBatteryIsSnoozed", value: true) - alarms.reloadSnoozeTime(key: "alertBatterySnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))) + alarms.reloadIsSnoozed(key: "alertRecBolusIsSnoozed", value: true) + alarms.reloadSnoozeTime(key: "alertRecBolusSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))) } } diff --git a/LoopFollow/repository/UserDefaults.swift b/LoopFollow/repository/UserDefaults.swift index 8df3e0c1..40b6ad2f 100644 --- a/LoopFollow/repository/UserDefaults.swift +++ b/LoopFollow/repository/UserDefaults.swift @@ -450,4 +450,13 @@ class UserDefaultsRepository { static let alertBatterySnoozedTime = UserDefaultsValue(key: "alertBatterySnoozedTime", default: nil) static let alertBatterySnoozeHours = UserDefaultsValue(key: "alertBatterySnoozeHours", default: 1) static var deviceBatteryLevel: UserDefaultsValue = UserDefaultsValue(key: "deviceBatteryLevel", default: 100.0) + + static let alertRecBolusActive = UserDefaultsValue(key: "alertRecBolusActive", default: false) + static let alertRecBolusLevel = UserDefaultsValue(key: "alertRecBolusLevel", default: 1) //Unit[s] + static let alertRecBolusSound = UserDefaultsValue(key: "alertRecBolusSound", default: "Dhol_Shuffleloop") + static let alertRecBolusRepeat = UserDefaultsValue(key: "alertRecBolusRepeat", default: false) + static let alertRecBolusIsSnoozed = UserDefaultsValue(key: "alertRecBolusIsSnoozed", default: false) + static let alertRecBolusSnooze = UserDefaultsValue(key: "alertRecBolusSnooze", default: 5) + static let alertRecBolusSnoozedTime = UserDefaultsValue(key: "alertRecBolusSnoozedTime", default: nil) + static var deviceRecBolus: UserDefaultsValue = UserDefaultsValue(key: "deviceRecBolus", default: 0.0) }