Przeglądaj źródła

Add: Pre-Snooze option for all alarms

Jon Fawcett 5 lat temu
rodzic
commit
bfb8c1235a

+ 19 - 2
LoopFollow/Controllers/Alarms.swift

@@ -693,11 +693,28 @@ extension MainViewController {
             let snoozeCalendar = Calendar.current
             let snoozeTime = snoozeCalendar.date(from: components)
             
-            //guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }
-            //snoozer.setQuietHours(snoozeTime: snoozeTime!)
             UserDefaultsRepository.nightTime.value = true
+            guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }
+            snoozer.setPresnoozeNight(snoozeTime: snoozeTime!)
         } else {
+            let today = Date()
+            let todayCalendar = Calendar.current
+            let end = UserDefaultsRepository.quietHourStart.value
+            let endCalendar = Calendar.current
+            
+            var components = DateComponents()
+            components.month = todayCalendar.component(.month, from: today)
+            components.day = todayCalendar.component(.day, from: today)
+            components.year = todayCalendar.component(.year, from: today)
+            components.hour = endCalendar.component(.hour, from: end!)
+            components.minute = endCalendar.component(.minute, from: end!)
+            components.second = endCalendar.component(.second, from: end!)
+            let snoozeCalendar = Calendar.current
+            let snoozeTime = snoozeCalendar.date(from: components)
+            
             UserDefaultsRepository.nightTime.value = false
+            guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }
+            snoozer.setPreSnoozeDay(snoozeTime: snoozeTime!)
         }
         
     }

+ 242 - 2
LoopFollow/ViewControllers/AlarmViewController.swift

@@ -143,6 +143,12 @@ class AlarmViewController: FormViewController {
         "During the day",
         "Never"
     ]
+    
+    var alertAutosnoozeOptions: [String] = [
+        "Never",
+        "At night",
+        "During the day"
+    ]
 
     
     func timeBasedSettings (pickerValue: String) -> (dayTime:Bool, nightTime:Bool) {
@@ -152,6 +158,27 @@ class AlarmViewController: FormViewController {
         if pickerValue.contains("Always") {
             dayTime = true
             nightTime = true
+        } else if pickerValue.contains("Never") {
+            dayTime = false
+            nightTime = false
+        }else{
+            if pickerValue.contains("night"){
+                nightTime = true
+            }
+            if pickerValue.contains("day"){
+                dayTime = true
+            }
+        }
+        return (dayTime, nightTime)
+    }
+
+    func timeBasedSettingsNever (pickerValue: String) -> (dayTime:Bool, nightTime:Bool) {
+        var dayTime = false
+        var nightTime = false
+        
+        if pickerValue.contains("Never") {
+            dayTime = true
+            nightTime = true
         }else{
             if pickerValue.contains("night"){
                 nightTime = true
@@ -602,6 +629,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertUrgentLowDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertUrgentLowNightTime.value = alertTimes.nightTime
             }
+            <<< PickerInputRow<String>("alertUrgentLowAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertUrgentLowAutosnooze.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.alertUrgentLowAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertUrgentLowAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertUrgentLowAutosnoozeNight.value = alertTimes.nightTime
+            }
         <<< DateTimeInlineRow("alertUrgentLowSnoozedTime") { row in
             row.title = "Snoozed Until"
             
@@ -732,6 +774,22 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertLowDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertLowNightTime.value = alertTimes.nightTime
             }
+            
+            <<< PickerInputRow<String>("alertLowAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertLowAutosnooze.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.alertLowAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertLowAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertLowAutosnoozeNight.value = alertTimes.nightTime
+            }
            
         <<< DateTimeInlineRow("alertLowSnoozedTime") { row in
             row.title = "Snoozed Until"
@@ -878,6 +936,22 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertHighNightTime.value = alertTimes.nightTime
             }
             
+            <<< PickerInputRow<String>("alertHightAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertHighAutosnooze.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.alertHighAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertHighAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertHighAutosnoozeNight.value = alertTimes.nightTime
+            }
+            
         <<< DateTimeInlineRow("alertHighSnoozedTime") { row in
             row.title = "Snoozed Until"
             if (UserDefaultsRepository.alertHighSnoozedTime.value != nil) {
@@ -1006,6 +1080,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertUrgentHighDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertUrgentHighNightTime.value = alertTimes.nightTime
             }
+            <<< PickerInputRow<String>("alertUrgentHighAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertUrgentHighAutosnooze.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.alertUrgentHighAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertUrgentHighAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertUrgentHighAutosnoozeNight.value = alertTimes.nightTime
+            }
             
         <<< DateTimeInlineRow("alertUrgentHighSnoozedTime") { row in
             row.title = "Snoozed Until"
@@ -1173,6 +1262,22 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertFastDropNightTime.value = alertTimes.nightTime
             }
             
+            <<< PickerInputRow<String>("alertFastDropAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertFastDropAutosnooze.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.alertFastDropAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertFastDropAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertFastDropAutosnoozeNight.value = alertTimes.nightTime
+            }
+            
         <<< DateTimeInlineRow("alertFastDropSnoozedTime") { row in
             row.title = "Snoozed Until"
            if (UserDefaultsRepository.alertFastDropSnoozedTime.value != nil) {
@@ -1338,6 +1443,22 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertFastRiseDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertFastRiseNightTime.value = alertTimes.nightTime
             }
+            
+            <<< PickerInputRow<String>("alertFastRiseAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertFastRiseAutosnooze.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.alertFastRiseAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertFastRiseAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertFastRiseAutosnoozeNight.value = alertTimes.nightTime
+            }
         <<< DateTimeInlineRow("alertFastRiseSnoozedTime") { row in
             row.title = "Snoozed Until"
            if (UserDefaultsRepository.alertFastRiseSnoozedTime.value != nil) {
@@ -1468,6 +1589,22 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertMissedReadingDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertMissedReadingNightTime.value = alertTimes.nightTime
             }
+            
+            <<< PickerInputRow<String>("alertMissedReadingAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertMissedReadingAutosnooze.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.alertMissedReadingAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertMissedReadingAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertMissedReadingAutosnoozeNight.value = alertTimes.nightTime
+            }
         <<< DateTimeInlineRow("alertMissedReadingSnoozedTime") { row in
             row.title = "Snoozed Until"
            if (UserDefaultsRepository.alertMissedReadingSnoozedTime.value != nil) {
@@ -1634,6 +1771,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertNotLoopingDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertNotLoopingNightTime.value = alertTimes.nightTime
             }
+            <<< PickerInputRow<String>("alertNotLoopingAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertNotLoopingAutosnooze.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.alertNotLoopingAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertNotLoopingAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertNotLoopingAutosnoozeNight.value = alertTimes.nightTime
+            }
         <<< DateTimeInlineRow("alertNotLoopingSnoozedTime") { row in
             row.title = "Snoozed Until"
            if (UserDefaultsRepository.alertNotLoopingSnoozedTime.value != nil) {
@@ -1826,6 +1978,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertMissedBolusDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertMissedBolusNightTime.value = alertTimes.nightTime
             }
+            <<< PickerInputRow<String>("alertMissedBolusAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertMissedBolusAutosnooze.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.alertMissedBolusAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertMissedBolusAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertMissedBolusAutosnoozeNight.value = alertTimes.nightTime
+            }
         <<< DateTimeInlineRow("alertMissedBolusSnoozedTime") { row in
             row.title = "Snoozed Until"
            if (UserDefaultsRepository.alertMissedBolusSnoozedTime.value != nil) {
@@ -1976,7 +2143,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertSAGEDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertSAGENightTime.value = alertTimes.nightTime
             }
-            
+            <<< PickerInputRow<String>("alertSAGEAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertSAGEAutosnooze.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.alertSAGEAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertSAGEAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertSAGEAutosnoozeNight.value = alertTimes.nightTime
+            }
             <<< DateTimeInlineRow("alertSAGESnoozedTime") { row in
                 row.title = "Snoozed Until"
                 if (UserDefaultsRepository.alertSAGESnoozedTime.value != nil) {
@@ -2113,6 +2294,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertCAGEDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertCAGENightTime.value = alertTimes.nightTime
             }
+            <<< PickerInputRow<String>("alertCAGEAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertCAGEAutosnooze.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.alertCAGEAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertCAGEAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertCAGEAutosnoozeNight.value = alertTimes.nightTime
+            }
             <<< DateTimeInlineRow("alertCAGESnoozedTime") { row in
                 row.title = "Snoozed Until"
                 if (UserDefaultsRepository.alertCAGESnoozedTime.value != nil) {
@@ -2222,6 +2418,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertOverrideStartNightTime.value = alertTimes.nightTime
 
             }
+            <<< PickerInputRow<String>("alertOverrideStartAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertOverrideStartAutosnooze.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.alertOverrideStartAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertOverrideStartAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertOverrideStartAutosnoozeNight.value = alertTimes.nightTime
+            }
         <<< DateTimeInlineRow("alertOverrideStartSnoozedTime") { row in
                 row.title = "Snoozed Until"
                 if (UserDefaultsRepository.alertOverrideStartSnoozedTime.value != nil) {
@@ -2331,6 +2542,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertOverrideEndDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertOverrideEndNightTime.value = alertTimes.nightTime
             }
+            <<< PickerInputRow<String>("alertOverrideEndAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertOverrideEndAutosnooze.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.alertOverrideEndAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertOverrideEndAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertOverrideEndAutosnoozeNight.value = alertTimes.nightTime
+            }
         <<< DateTimeInlineRow("alertOverrideEndSnoozedTime") { row in
                 row.title = "Snoozed Until"
                 if (UserDefaultsRepository.alertOverrideEndSnoozedTime.value != nil) {
@@ -2469,7 +2695,21 @@ class AlarmViewController: FormViewController {
                     UserDefaultsRepository.alertPumpDayTime.value = alertTimes.dayTime
                     UserDefaultsRepository.alertPumpNightTime.value = alertTimes.nightTime
             }
-
+            <<< PickerInputRow<String>("alertPumpAutoSnooze") { row in
+                row.title = "Pre-Snooze"
+                row.options = alertAutosnoozeOptions
+                row.value = UserDefaultsRepository.alertPumpAutosnooze.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.alertPumpAutosnooze.value = value
+                let alertTimes = self!.timeBasedSettings(pickerValue: value)
+                UserDefaultsRepository.alertPumpAutosnoozeDay.value = alertTimes.dayTime
+                UserDefaultsRepository.alertPumpAutosnoozeNight.value = alertTimes.nightTime
+            }
             <<< DateTimeInlineRow("alertPumpSnoozedTime") { row in
                 row.title = "Snoozed Until"
                 if (UserDefaultsRepository.alertPumpSnoozedTime.value != nil) {

+ 165 - 7
LoopFollow/ViewControllers/SnoozeViewController.swift

@@ -204,45 +204,203 @@ class SnoozeViewController: UIViewController, UNUserNotificationCenterDelegate {
        }
     }
     
-    func setQuietHours(snoozeTime: Date)
+    func setPresnoozeNight(snoozeTime: Date)
     {
+        if UserDefaultsRepository.alertUrgentLowAutosnoozeNight.value {
+            UserDefaultsRepository.alertUrgentLowIsSnoozed.value = true
+            UserDefaultsRepository.alertUrgentLowSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertLowAutosnoozeNight.value {
+            UserDefaultsRepository.alertLowIsSnoozed.value = true
+            UserDefaultsRepository.alertLowSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertLowIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertLowSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertHighAutosnoozeNight.value {
+            UserDefaultsRepository.alertHighIsSnoozed.value = true
+            UserDefaultsRepository.alertHighSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertHighIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertHighSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertUrgentHighAutosnoozeNight.value {
+            UserDefaultsRepository.alertUrgentHighIsSnoozed.value = true
+            UserDefaultsRepository.alertUrgentHighSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertUrgentHighIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertUrgentHighSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertMissedReadingAutosnoozeNight.value {
+            UserDefaultsRepository.alertMissedReadingIsSnoozed.value = true
+            UserDefaultsRepository.alertMissedReadingSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertFastDropAutosnoozeNight.value {
+            UserDefaultsRepository.alertFastDropIsSnoozed.value = true
+            UserDefaultsRepository.alertFastDropSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertFastDropIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertFastDropSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertFastRiseAutosnoozeNight.value {
+            UserDefaultsRepository.alertFastRiseIsSnoozed.value = true
+            UserDefaultsRepository.alertFastRiseSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertNotLoopingAutosnoozeNight.value {
+            UserDefaultsRepository.alertNotLoopingIsSnoozed.value = true
+            UserDefaultsRepository.alertNotLoopingSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertMissedBolusAutosnoozeNight.value {
+            UserDefaultsRepository.alertMissedBolusIsSnoozed.value = true
+            UserDefaultsRepository.alertMissedBolusSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertOverrideStartAutosnoozeNight.value {
+            UserDefaultsRepository.alertOverrideStartIsSnoozed.value = true
+            UserDefaultsRepository.alertOverrideStartSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertOverrideStartIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertOverrideStartSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertOverrideEndAutosnoozeNight.value {
+            UserDefaultsRepository.alertOverrideEndIsSnoozed.value = true
+            UserDefaultsRepository.alertOverrideEndSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertOverrideEndIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertOverrideEndSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertCAGEAutosnoozeNight.value {
+            UserDefaultsRepository.alertCAGEIsSnoozed.value = true
+            UserDefaultsRepository.alertCAGESnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertSAGEAutosnoozeNight.value {
+            UserDefaultsRepository.alertSAGEIsSnoozed.value = true
+            UserDefaultsRepository.alertSAGESnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertPumpAutosnoozeNight.value {
+            UserDefaultsRepository.alertPumpIsSnoozed.value = true
+            UserDefaultsRepository.alertPumpSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertPumpIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertPumpSnoozedTime", setNil: false, value: snoozeTime)
+        }
         
-        if UserDefaultsRepository.alertMissedBolusQuiet.value {
+    }
+    
+    func setPreSnoozeDay(snoozeTime: Date)
+    {
+        if UserDefaultsRepository.alertUrgentLowAutosnoozeDay.value {
+            UserDefaultsRepository.alertUrgentLowIsSnoozed.value = true
+            UserDefaultsRepository.alertUrgentLowSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertLowAutosnoozeDay.value {
+            UserDefaultsRepository.alertLowIsSnoozed.value = true
+            UserDefaultsRepository.alertLowSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertLowIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertLowSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertHighAutosnoozeDay.value {
+            UserDefaultsRepository.alertHighIsSnoozed.value = true
+            UserDefaultsRepository.alertHighSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertHighIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertHighSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertUrgentHighAutosnoozeDay.value {
+            UserDefaultsRepository.alertUrgentHighIsSnoozed.value = true
+            UserDefaultsRepository.alertUrgentHighSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertUrgentHighIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertUrgentHighSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertMissedReadingAutosnoozeDay.value {
+            UserDefaultsRepository.alertMissedReadingIsSnoozed.value = true
+            UserDefaultsRepository.alertMissedReadingSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertFastDropAutosnoozeDay.value {
+            UserDefaultsRepository.alertFastDropIsSnoozed.value = true
+            UserDefaultsRepository.alertFastDropSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertFastDropIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertFastDropSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertFastRiseAutosnoozeDay.value {
+            UserDefaultsRepository.alertFastRiseIsSnoozed.value = true
+            UserDefaultsRepository.alertFastRiseSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertNotLoopingAutosnoozeDay.value {
+            UserDefaultsRepository.alertNotLoopingIsSnoozed.value = true
+            UserDefaultsRepository.alertNotLoopingSnoozedTime.value = snoozeTime
+            guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
+            alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: true)
+            alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: false, value: snoozeTime)
+        }
+        if UserDefaultsRepository.alertMissedBolusAutosnoozeDay.value {
             UserDefaultsRepository.alertMissedBolusIsSnoozed.value = true
             UserDefaultsRepository.alertMissedBolusSnoozedTime.value = snoozeTime
             guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
             alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: true)
             alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: false, value: snoozeTime)
         }
-        if UserDefaultsRepository.alertOverrideStartQuiet.value {
+        if UserDefaultsRepository.alertOverrideStartAutosnoozeDay.value {
             UserDefaultsRepository.alertOverrideStartIsSnoozed.value = true
             UserDefaultsRepository.alertOverrideStartSnoozedTime.value = snoozeTime
             guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
             alarms.reloadIsSnoozed(key: "alertOverrideStartIsSnoozed", value: true)
             alarms.reloadSnoozeTime(key: "alertOverrideStartSnoozedTime", setNil: false, value: snoozeTime)
         }
-        if UserDefaultsRepository.alertOverrideEndQuiet.value {
+        if UserDefaultsRepository.alertOverrideEndAutosnoozeDay.value {
             UserDefaultsRepository.alertOverrideEndIsSnoozed.value = true
             UserDefaultsRepository.alertOverrideEndSnoozedTime.value = snoozeTime
             guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
             alarms.reloadIsSnoozed(key: "alertOverrideEndIsSnoozed", value: true)
             alarms.reloadSnoozeTime(key: "alertOverrideEndSnoozedTime", setNil: false, value: snoozeTime)
         }
-        if UserDefaultsRepository.alertCAGEQuiet.value {
+        if UserDefaultsRepository.alertCAGEAutosnoozeDay.value {
             UserDefaultsRepository.alertCAGEIsSnoozed.value = true
             UserDefaultsRepository.alertCAGESnoozedTime.value = snoozeTime
             guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
             alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: true)
             alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: false, value: snoozeTime)
         }
-        if UserDefaultsRepository.alertSAGEQuiet.value {
+        if UserDefaultsRepository.alertSAGEAutosnoozeDay.value {
             UserDefaultsRepository.alertSAGEIsSnoozed.value = true
             UserDefaultsRepository.alertSAGESnoozedTime.value = snoozeTime
             guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
             alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: true)
             alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: false, value: snoozeTime)
         }
-        if UserDefaultsRepository.alertPumpQuiet.value {
+        if UserDefaultsRepository.alertPumpAutosnoozeDay.value {
             UserDefaultsRepository.alertPumpIsSnoozed.value = true
             UserDefaultsRepository.alertPumpSnoozedTime.value = snoozeTime
             guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }

+ 42 - 1
LoopFollow/repository/UserDefaults.swift

@@ -139,6 +139,9 @@ class UserDefaultsRepository {
     static let alertUrgentLowAudible = UserDefaultsValue<String>(key: "alertUrgentLowAudible", default: "Always")
     static let alertUrgentLowDayTimeAudible = UserDefaultsValue<Bool>(key: "alertUrgentLowDayTimeAudible", default: true)
     static let alertUrgentLowNightTimeAudible = UserDefaultsValue<Bool>(key: "alertUrgentLowNightTimeAudible", default: true)
+    static let alertUrgentLowAutosnooze = UserDefaultsValue<String>(key: "alertUrgentLowAutosnooze", default: "Never")
+    static let alertUrgentLowAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertUrgentLowAutosnoozeDay", default: false)
+    static let alertUrgentLowAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertUrgentLowAutosnoozeNight", default: false)
     
     static let alertLowActive = UserDefaultsValue<Bool>(key: "alertLowActive", default: false)
     static let alertLowBG = UserDefaultsValue<Float>(key: "alertLowBG", default: 70.0)
@@ -152,6 +155,9 @@ class UserDefaultsRepository {
     static let alertLowAudible = UserDefaultsValue<String>(key: "alertLowAudible", default: "Always")
     static let alertLowDayTimeAudible = UserDefaultsValue<Bool>(key: "alertLowDayTimeAudible", default: true)
     static let alertLowNightTimeAudible = UserDefaultsValue<Bool>(key: "alertLowNightTimeAudible", default: true)
+    static let alertLowAutosnooze = UserDefaultsValue<String>(key: "alertLowAutosnooze", default: "Never")
+    static let alertLowAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertLowAutosnoozeDay", default: false)
+    static let alertLowAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertLowAutosnoozeNight", default: false)
     
     static let alertHighActive = UserDefaultsValue<Bool>(key: "alertHighActive", default: false)
     static let alertHighBG = UserDefaultsValue<Float>(key: "alertHighBG", default: 180.0)
@@ -166,6 +172,9 @@ class UserDefaultsRepository {
     static let alertHighAudible = UserDefaultsValue<String>(key: "alertHighAudible", default: "Always")
     static let alertHighDayTimeAudible = UserDefaultsValue<Bool>(key: "alertHighDayTimeAudible", default: true)
     static let alertHighNightTimeAudible = UserDefaultsValue<Bool>(key: "alertHighNightTimeAudible", default: true)
+    static let alertHighAutosnooze = UserDefaultsValue<String>(key: "alertHighAutosnooze", default: "Never")
+    static let alertHighAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertHighAutosnoozeDay", default: false)
+    static let alertHighAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertHighAutosnoozeNight", default: false)
     
     static let alertUrgentHighActive = UserDefaultsValue<Bool>(key: "alertUrgentHighActive", default: false)
     static let alertUrgentHighBG = UserDefaultsValue<Float>(key: "alertUrgentHighBG", default: 250.0)
@@ -179,7 +188,9 @@ class UserDefaultsRepository {
     static let alertUrgentHighAudible = UserDefaultsValue<String>(key: "alertUrgentHighAudible", default: "Always")
     static let alertUrgentHighDayTimeAudible = UserDefaultsValue<Bool>(key: "alertUrgentHighDayTimeAudible", default: true)
     static let alertUrgentHighNightTimeAudible = UserDefaultsValue<Bool>(key: "alertUrgentHighNightTimeAudible", default: true)
-
+    static let alertUrgentHighAutosnooze = UserDefaultsValue<String>(key: "alertUrgentHighAutosnooze", default: "Never")
+    static let alertUrgentHighAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertUrgentHighAutosnoozeDay", default: false)
+    static let alertUrgentHighAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertUrgentHighAutosnoozeNight", default: false)
     
     static let alertFastDropActive = UserDefaultsValue<Bool>(key: "alertFastDropDeltaActive", default: false)
     static let alertFastDropSnooze = UserDefaultsValue<Int>(key: "alertFastDropDeltaSnooze", default: 10)
@@ -196,6 +207,9 @@ class UserDefaultsRepository {
     static let alertFastDropAudible = UserDefaultsValue<String>(key: "alertFastDropAudible", default: "Always")
     static let alertFastDropDayTimeAudible = UserDefaultsValue<Bool>(key: "alertFastDropDayTimeAudible", default: true)
     static let alertFastDropNightTimeAudible = UserDefaultsValue<Bool>(key: "alertFastDropNightTimeAudible", default: true)
+    static let alertFastDropAutosnooze = UserDefaultsValue<String>(key: "alertFastDropAutosnooze", default: "Never")
+    static let alertFastDropAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertFastDropAutosnoozeDay", default: false)
+    static let alertFastDropAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertFastDropAutosnoozeNight", default: false)
     
     static let alertFastRiseActive = UserDefaultsValue<Bool>(key: "alertFastRiseDeltaActive", default: false)
     static let alertFastRiseSnooze = UserDefaultsValue<Int>(key: "alertFastRiseDeltaSnooze", default: 10)
@@ -212,6 +226,9 @@ class UserDefaultsRepository {
     static let alertFastRiseAudible = UserDefaultsValue<String>(key: "alertFastRiseAudible", default: "Always")
     static let alertFastRiseDayTimeAudible = UserDefaultsValue<Bool>(key: "alertFastRiseDayTimeAudible", default: true)
     static let alertFastRiseNightTimeAudible = UserDefaultsValue<Bool>(key: "alertFastRiseNightTimeAudible", default: true)
+    static let alertFastRiseAutosnooze = UserDefaultsValue<String>(key: "alertFastRiseAutosnooze", default: "Never")
+    static let alertFastRiseAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertFastRiseAutosnoozeDay", default: false)
+    static let alertFastRiseAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertFastRiseAutosnoozeNight", default: false)
     
     
     static let alertMissedReadingActive = UserDefaultsValue<Bool>(key: "alertMissedReadingActive", default: false)
@@ -226,6 +243,9 @@ class UserDefaultsRepository {
     static let alertMissedReadingAudible = UserDefaultsValue<String>(key: "alertMissedReadingAudible", default: "Always")
     static let alertMissedReadingDayTimeAudible = UserDefaultsValue<Bool>(key: "alertMissedReadingDayTimeAudible", default: true)
     static let alertMissedReadingNightTimeAudible = UserDefaultsValue<Bool>(key: "alertMissedReadingNightTimeAudible", default: true)
+    static let alertMissedReadingAutosnooze = UserDefaultsValue<String>(key: "alertMissedReadingAutosnooze", default: "Never")
+    static let alertMissedReadingAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertMissedReadingAutosnoozeDay", default: false)
+    static let alertMissedReadingAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertMissedReadingAutosnoozeNight", default: false)
     
     
     static let alertNotLoopingActive = UserDefaultsValue<Bool>(key: "alertNotLoopingActive", default: false)
@@ -244,6 +264,9 @@ class UserDefaultsRepository {
     static let alertNotLoopingAudible = UserDefaultsValue<String>(key: "alertNotLoopingAudible", default: "Always")
     static let alertNotLoopingDayTimeAudible = UserDefaultsValue<Bool>(key: "alertNotLoopingDayTimeAudible", default: true)
     static let alertNotLoopingNightTimeAudible = UserDefaultsValue<Bool>(key: "alertNotLoopingNightTimeAudible", default: true)
+    static let alertNotLoopingAutosnooze = UserDefaultsValue<String>(key: "alertNotLoopingAutosnooze", default: "Never")
+    static let alertNotLoopingAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertNotLoopingAutosnoozeDay", default: false)
+    static let alertNotLoopingAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertNotLoopingAutosnoozeNight", default: false)
     
     static let alertMissedBolusActive = UserDefaultsValue<Bool>(key: "alertMissedBolusActive", default: false)
     static let alertMissedBolus = UserDefaultsValue<Int>(key: "alertMissedBolus", default: 10)
@@ -262,6 +285,9 @@ class UserDefaultsRepository {
     static let alertMissedBolusAudible = UserDefaultsValue<String>(key: "alertMissedBolusAudible", default: "Always")
     static let alertMissedBolusDayTimeAudible = UserDefaultsValue<Bool>(key: "alertMissedBolusDayTimeAudible", default: true)
     static let alertMissedBolusNightTimeAudible = UserDefaultsValue<Bool>(key: "alertMissedBolusNightTimeAudible", default: true)
+    static let alertMissedBolusAutosnooze = UserDefaultsValue<String>(key: "alertMissedBolusAutosnooze", default: "Never")
+    static let alertMissedBolusAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertMissedBolusAutosnoozeDay", default: false)
+    static let alertMissedBolusAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertMissedBolusAutosnoozeNight", default: false)
     
     static let alertSAGEActive = UserDefaultsValue<Bool>(key: "alertSAGEActive", default: false)
     static let alertSAGE = UserDefaultsValue<Int>(key: "alertSAGE", default: 8) //Hours
@@ -276,6 +302,9 @@ class UserDefaultsRepository {
     static let alertSAGESnoozedTime = UserDefaultsValue<Date?>(key: "alertSAGESnoozedTime", default: nil)
     static let alertSAGEIsSnoozed = UserDefaultsValue<Bool>(key: "alertSAGEIsSnoozed", default: false)
     static let alertSAGESound = UserDefaultsValue<String>(key: "alertSAGESound", default: "Wake_Up_Will_You")
+    static let alertSAGEAutosnooze = UserDefaultsValue<String>(key: "alertSAGEAutosnooze", default: "At night")
+    static let alertSAGEAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertSAGEAutosnoozeDay", default: false)
+    static let alertSAGEAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertSAGEAutosnoozeNight", default: true)
     
     static let alertCAGEActive = UserDefaultsValue<Bool>(key: "alertCAGEActive", default: false)
     static let alertCAGE = UserDefaultsValue<Int>(key: "alertCAGE", default: 4) //Hours
@@ -290,6 +319,9 @@ class UserDefaultsRepository {
     static let alertCAGESnoozedTime = UserDefaultsValue<Date?>(key: "alertCAGESnoozedTime", default: nil)
     static let alertCAGEIsSnoozed = UserDefaultsValue<Bool>(key: "alertCAGEIsSnoozed", default: false)
     static let alertCAGESound = UserDefaultsValue<String>(key: "alertCAGESound", default: "Wake_Up_Will_You")
+    static let alertCAGEAutosnooze = UserDefaultsValue<String>(key: "alertCAGEAutosnooze", default: "At night")
+    static let alertCAGEAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertCAGEAutosnoozeDay", default: false)
+    static let alertCAGEAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertCAGEAutosnoozeNight", default: true)
     
     static let alertAppInactive = UserDefaultsValue<Bool>(key: "alertAppInactive", default: false)
     
@@ -311,6 +343,9 @@ class UserDefaultsRepository {
     static let alertOverrideStartSound = UserDefaultsValue<String>(key: "alertOverrideStartSound", default: "Ending_Reached")
     static let alertOverrideStartSnoozedTime = UserDefaultsValue<Date?>(key: "alertOverrideStartSnoozedTime", default: nil)
     static let alertOverrideStartIsSnoozed = UserDefaultsValue<Bool>(key: "alertOverrideStartIsSnoozed", default: false)
+    static let alertOverrideStartAutosnooze = UserDefaultsValue<String>(key: "alertOverrideStartAutosnooze", default: "Never")
+    static let alertOverrideStartAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertOverrideStartAutosnoozeDay", default: false)
+    static let alertOverrideStartAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertOverrideStartAutosnoozeNight", default: false)
     
     static let alertOverrideEnd = UserDefaultsValue<Bool>(key: "alertOverrideEnd", default: false)
     static let alertOverrideEndQuiet = UserDefaultsValue<Bool>(key: "alertOverrideEndQuiet", default: false)
@@ -323,6 +358,9 @@ class UserDefaultsRepository {
     static let alertOverrideEndSound = UserDefaultsValue<String>(key: "alertOverrideEndSound", default: "Alert_Tone_Busy")
     static let alertOverrideEndSnoozedTime = UserDefaultsValue<Date?>(key: "alertOverrideEndSnoozedTime", default: nil)
     static let alertOverrideEndIsSnoozed = UserDefaultsValue<Bool>(key: "alertOverrideEndIsSnoozed", default: false)
+    static let alertOverrideEndAutosnooze = UserDefaultsValue<String>(key: "alertOverrideEndAutosnooze", default: "Never")
+    static let alertOverrideEndAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertOverrideEndAutosnoozeDay", default: false)
+    static let alertOverrideEndAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertOverrideEndAutosnoozeNight", default: false)
     
     static let alertPump = UserDefaultsValue<Bool>(key: "alertPump", default: false)
     static let alertPumpAt = UserDefaultsValue<Int>(key: "alertPumpAt", default: 10) //Units
@@ -337,5 +375,8 @@ class UserDefaultsRepository {
     static let alertPumpSnoozeHours = UserDefaultsValue<Int>(key: "alertPumpSnoozeHours", default: 5) //Hours
     static let alertPumpIsSnoozed = UserDefaultsValue<Bool>(key: "alertPumpIsSnoozed", default: false)
     static let alertPumpSnoozedTime = UserDefaultsValue<Date?>(key: "alertPumpSnoozedTime", default: nil)
+    static let alertPumpAutosnooze = UserDefaultsValue<String>(key: "alertPumpAutosnooze", default: "Never")
+    static let alertPumpAutosnoozeDay = UserDefaultsValue<Bool>(key: "alertPumpAutosnoozeDay", default: false)
+    static let alertPumpAutosnoozeNight = UserDefaultsValue<Bool>(key: "alertPumpAutosnoozeNight", default: false)
     
 }