SnoozeViewController.swift 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. //
  2. // SecondViewController.swift
  3. // LoopFollow
  4. //
  5. // Created by Jon Fawcett on 6/1/20.
  6. // Copyright © 2020 Jon Fawcett. All rights reserved.
  7. //
  8. import UIKit
  9. import UserNotifications
  10. class SnoozeViewController: UIViewController, UNUserNotificationCenterDelegate {
  11. var appStateController: AppStateController?
  12. var snoozeTabItem: UITabBarItem = UITabBarItem()
  13. var mainTabItem: UITabBarItem = UITabBarItem()
  14. var clockTimer: Timer = Timer()
  15. @IBOutlet weak var SnoozeButton: UIButton!
  16. @IBOutlet weak var BGLabel: UILabel!
  17. @IBOutlet weak var DirectionLabel: UILabel!
  18. @IBOutlet weak var DeltaLabel: UILabel!
  19. @IBOutlet weak var MinAgoLabel: UILabel!
  20. @IBOutlet weak var AlertLabel: UILabel!
  21. @IBOutlet weak var clockLabel: UILabel!
  22. @IBOutlet weak var snoozeForMinuteLabel: UILabel!
  23. @IBOutlet weak var snoozeForMinuteStepper: UIStepper!
  24. @IBOutlet weak var debugTextView: UITextView!
  25. @IBAction func SnoozeButton(_ sender: Any) {
  26. AlarmSound.stop()
  27. guard let mainVC = self.tabBarController!.viewControllers?[0] as? MainViewController else { return }
  28. mainVC.startCheckAlarmTimer(time: mainVC.checkAlarmInterval)
  29. let tabBarControllerItems = self.tabBarController?.tabBar.items
  30. if let arrayOfTabBarItems = tabBarControllerItems as! AnyObject as? NSArray{
  31. snoozeTabItem = arrayOfTabBarItems[2] as! UITabBarItem
  32. }
  33. setSnoozeTime()
  34. AlertLabel.isHidden = true
  35. SnoozeButton.isHidden = true
  36. clockLabel.isHidden = false
  37. snoozeForMinuteStepper.isHidden = true
  38. snoozeForMinuteLabel.isHidden = true
  39. }
  40. @IBAction func snoozeForMinuteValChanged(_ sender: UIStepper) {
  41. snoozeForMinuteLabel.text = Int(sender.value).description
  42. }
  43. // Update Time
  44. func startClockTimer(time: TimeInterval) {
  45. clockTimer = Timer.scheduledTimer(timeInterval: time,
  46. target: self,
  47. selector: #selector(clockTimerDidEnd(_:)),
  48. userInfo: nil,
  49. repeats: true)
  50. }
  51. // Update Time Ended
  52. @objc func clockTimerDidEnd(_ timer:Timer) {
  53. let formatter = DateFormatter()
  54. if dateTimeUtils.is24Hour() {
  55. formatter.setLocalizedDateFormatFromTemplate("HH:mm")
  56. } else {
  57. formatter.setLocalizedDateFormatFromTemplate("hh:mm a")
  58. }
  59. clockLabel.text = formatter.string(from: Date())
  60. }
  61. func updateDisplayWhenTriggered(bgVal: String, directionVal: String, deltaVal: String, minAgoVal: String, alertLabelVal: String){
  62. loadViewIfNeeded()
  63. BGLabel.text = bgVal
  64. DirectionLabel.text = directionVal
  65. DeltaLabel.text = deltaVal
  66. MinAgoLabel.text = minAgoVal
  67. AlertLabel.text = alertLabelVal
  68. if alertLabelVal == "none" { return }
  69. sendNotification(self, bgVal: bgVal, directionVal: directionVal, deltaVal: deltaVal, minAgoVal: minAgoVal, alertLabelVal: alertLabelVal)
  70. }
  71. func sendNotification(_ sender: Any, bgVal: String, directionVal: String, deltaVal: String, minAgoVal: String, alertLabelVal: String) {
  72. UNUserNotificationCenter.current().delegate = self
  73. let content = UNMutableNotificationContent()
  74. content.title = alertLabelVal
  75. content.subtitle += bgVal + " "
  76. content.subtitle += directionVal + " "
  77. content.subtitle += deltaVal
  78. content.categoryIdentifier = "category"
  79. // This is needed to trigger vibrate on watch and phone
  80. // TODO:
  81. // See if we can use .Critcal
  82. // See if we should use this method instead of direct sound player
  83. content.sound = .default
  84. let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
  85. let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
  86. UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
  87. let action = UNNotificationAction(identifier: "snooze", title: "Snooze", options: [])
  88. let category = UNNotificationCategory(identifier: "category", actions: [action], intentIdentifiers: [], options: [])
  89. UNUserNotificationCenter.current().setNotificationCategories([category])
  90. }
  91. func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
  92. if response.actionIdentifier == "snooze" {
  93. SnoozeButton(self)
  94. }
  95. }
  96. func setSnoozeTime()
  97. {
  98. if AlarmSound.whichAlarm == "Temporary Alert" {
  99. UserDefaultsRepository.alertTemporaryActive.value = false
  100. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  101. alarms.reloadIsSnoozed(key: "alertTemporaryActive", value: false)
  102. } else if AlarmSound.whichAlarm == "Urgent Low Alert" {
  103. UserDefaultsRepository.alertUrgentLowIsSnoozed.value = true
  104. UserDefaultsRepository.alertUrgentLowSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  105. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  106. alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: true)
  107. alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  108. } else if AlarmSound.whichAlarm == "Low Alert" {
  109. UserDefaultsRepository.alertLowIsSnoozed.value = true
  110. UserDefaultsRepository.alertLowSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  111. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  112. alarms.reloadIsSnoozed(key: "alertLowIsSnoozed", value: true)
  113. alarms.reloadSnoozeTime(key: "alertLowSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  114. } else if AlarmSound.whichAlarm == "Predicted Urgent Low Alert" {
  115. UserDefaultsRepository.alertUrgentLowIsSnoozed.value = true
  116. UserDefaultsRepository.alertUrgentLowSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  117. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  118. alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: true)
  119. alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  120. } else if AlarmSound.whichAlarm == "High Alert" {
  121. UserDefaultsRepository.alertHighIsSnoozed.value = true
  122. UserDefaultsRepository.alertHighSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  123. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  124. alarms.reloadIsSnoozed(key: "alertHighIsSnoozed", value: true)
  125. alarms.reloadSnoozeTime(key: "alertHighSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  126. } else if AlarmSound.whichAlarm == "Urgent High Alert" {
  127. UserDefaultsRepository.alertUrgentHighIsSnoozed.value = true
  128. UserDefaultsRepository.alertUrgentHighSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  129. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  130. alarms.reloadIsSnoozed(key: "alertUrgentHighIsSnoozed", value: true)
  131. alarms.reloadSnoozeTime(key: "alertUrgentHighSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  132. } else if AlarmSound.whichAlarm == "Fast Drop Alert" {
  133. UserDefaultsRepository.alertFastDropIsSnoozed.value = true
  134. UserDefaultsRepository.alertFastDropSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  135. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  136. alarms.reloadIsSnoozed(key: "alertFastDropIsSnoozed", value: true)
  137. alarms.reloadSnoozeTime(key: "alertFastDropSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  138. } else if AlarmSound.whichAlarm == "Fast Rise Alert" {
  139. UserDefaultsRepository.alertFastRiseIsSnoozed.value = true
  140. UserDefaultsRepository.alertFastRiseSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  141. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  142. alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: true)
  143. alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  144. } else if AlarmSound.whichAlarm == "Missed Reading Alert" {
  145. UserDefaultsRepository.alertMissedReadingIsSnoozed.value = true
  146. UserDefaultsRepository.alertMissedReadingSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  147. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  148. alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: true)
  149. alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  150. } else if AlarmSound.whichAlarm == "Sensor Change Alert" {
  151. UserDefaultsRepository.alertSAGEIsSnoozed.value = true
  152. UserDefaultsRepository.alertSAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))
  153. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  154. alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: true)
  155. alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)))
  156. } else if AlarmSound.whichAlarm == "Pump Change Alert" {
  157. UserDefaultsRepository.alertCAGEIsSnoozed.value = true
  158. UserDefaultsRepository.alertCAGESnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))
  159. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  160. alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: true)
  161. alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)))
  162. } else if AlarmSound.whichAlarm == "Not Looping Alert" {
  163. UserDefaultsRepository.alertNotLoopingIsSnoozed.value = true
  164. UserDefaultsRepository.alertNotLoopingSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  165. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  166. alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: true)
  167. alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  168. } else if AlarmSound.whichAlarm == "Missed Bolus Alert" {
  169. UserDefaultsRepository.alertMissedBolusIsSnoozed.value = true
  170. UserDefaultsRepository.alertMissedBolusSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60))
  171. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  172. alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: true)
  173. alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60)))
  174. } else if AlarmSound.whichAlarm == "Low Insulin Alert" {
  175. UserDefaultsRepository.alertPumpIsSnoozed.value = true
  176. UserDefaultsRepository.alertPumpSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))
  177. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  178. alarms.reloadIsSnoozed(key: "alertPumpIsSnoozed", value: true)
  179. alarms.reloadSnoozeTime(key: "alertPumpSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)))
  180. } else if AlarmSound.whichAlarm == "IOB Alert" {
  181. UserDefaultsRepository.alertIOBIsSnoozed.value = true
  182. UserDefaultsRepository.alertIOBSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))
  183. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  184. alarms.reloadIsSnoozed(key: "alertIOBIsSnoozed", value: true)
  185. alarms.reloadSnoozeTime(key: "alertIOBSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)))
  186. } else if AlarmSound.whichAlarm == "COB Alert" {
  187. UserDefaultsRepository.alertCOBIsSnoozed.value = true
  188. UserDefaultsRepository.alertCOBSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))
  189. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  190. alarms.reloadIsSnoozed(key: "alertCOBIsSnoozed", value: true)
  191. alarms.reloadSnoozeTime(key: "alertCOBSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)))
  192. } else if AlarmSound.whichAlarm == "Low Battery" {
  193. UserDefaultsRepository.alertBatteryIsSnoozed.value = true
  194. UserDefaultsRepository.alertBatterySnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))
  195. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  196. alarms.reloadIsSnoozed(key: "alertBatteryIsSnoozed", value: true)
  197. alarms.reloadSnoozeTime(key: "alertBatterySnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)))
  198. } else if AlarmSound.whichAlarm == "Rec. Bolus" {
  199. UserDefaultsRepository.alertRecBolusIsSnoozed.value = true
  200. UserDefaultsRepository.alertRecBolusSnoozedTime.value = Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60))
  201. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  202. alarms.reloadIsSnoozed(key: "alertRecBolusIsSnoozed", value: true)
  203. alarms.reloadSnoozeTime(key: "alertRecBolusSnoozedTime", setNil: false, value: Date().addingTimeInterval(TimeInterval(snoozeForMinuteStepper.value * 60 * 60)))
  204. }
  205. }
  206. func setPresnoozeNight(snoozeTime: Date)
  207. {
  208. if UserDefaultsRepository.alertUrgentLowAutosnoozeNight.value {
  209. UserDefaultsRepository.alertUrgentLowIsSnoozed.value = true
  210. UserDefaultsRepository.alertUrgentLowSnoozedTime.value = snoozeTime
  211. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  212. alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: true)
  213. alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: false, value: snoozeTime)
  214. }
  215. if UserDefaultsRepository.alertLowAutosnoozeNight.value {
  216. UserDefaultsRepository.alertLowIsSnoozed.value = true
  217. UserDefaultsRepository.alertLowSnoozedTime.value = snoozeTime
  218. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  219. alarms.reloadIsSnoozed(key: "alertLowIsSnoozed", value: true)
  220. alarms.reloadSnoozeTime(key: "alertLowSnoozedTime", setNil: false, value: snoozeTime)
  221. }
  222. if UserDefaultsRepository.alertHighAutosnoozeNight.value {
  223. UserDefaultsRepository.alertHighIsSnoozed.value = true
  224. UserDefaultsRepository.alertHighSnoozedTime.value = snoozeTime
  225. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  226. alarms.reloadIsSnoozed(key: "alertHighIsSnoozed", value: true)
  227. alarms.reloadSnoozeTime(key: "alertHighSnoozedTime", setNil: false, value: snoozeTime)
  228. }
  229. if UserDefaultsRepository.alertUrgentHighAutosnoozeNight.value {
  230. UserDefaultsRepository.alertUrgentHighIsSnoozed.value = true
  231. UserDefaultsRepository.alertUrgentHighSnoozedTime.value = snoozeTime
  232. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  233. alarms.reloadIsSnoozed(key: "alertUrgentHighIsSnoozed", value: true)
  234. alarms.reloadSnoozeTime(key: "alertUrgentHighSnoozedTime", setNil: false, value: snoozeTime)
  235. }
  236. if UserDefaultsRepository.alertMissedReadingAutosnoozeNight.value {
  237. UserDefaultsRepository.alertMissedReadingIsSnoozed.value = true
  238. UserDefaultsRepository.alertMissedReadingSnoozedTime.value = snoozeTime
  239. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  240. alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: true)
  241. alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: false, value: snoozeTime)
  242. }
  243. if UserDefaultsRepository.alertFastDropAutosnoozeNight.value {
  244. UserDefaultsRepository.alertFastDropIsSnoozed.value = true
  245. UserDefaultsRepository.alertFastDropSnoozedTime.value = snoozeTime
  246. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  247. alarms.reloadIsSnoozed(key: "alertFastDropIsSnoozed", value: true)
  248. alarms.reloadSnoozeTime(key: "alertFastDropSnoozedTime", setNil: false, value: snoozeTime)
  249. }
  250. if UserDefaultsRepository.alertFastRiseAutosnoozeNight.value {
  251. UserDefaultsRepository.alertFastRiseIsSnoozed.value = true
  252. UserDefaultsRepository.alertFastRiseSnoozedTime.value = snoozeTime
  253. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  254. alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: true)
  255. alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: false, value: snoozeTime)
  256. }
  257. if UserDefaultsRepository.alertNotLoopingAutosnoozeNight.value {
  258. UserDefaultsRepository.alertNotLoopingIsSnoozed.value = true
  259. UserDefaultsRepository.alertNotLoopingSnoozedTime.value = snoozeTime
  260. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  261. alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: true)
  262. alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: false, value: snoozeTime)
  263. }
  264. if UserDefaultsRepository.alertMissedBolusAutosnoozeNight.value {
  265. UserDefaultsRepository.alertMissedBolusIsSnoozed.value = true
  266. UserDefaultsRepository.alertMissedBolusSnoozedTime.value = snoozeTime
  267. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  268. alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: true)
  269. alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: false, value: snoozeTime)
  270. }
  271. if UserDefaultsRepository.alertOverrideStartAutosnoozeNight.value {
  272. UserDefaultsRepository.alertOverrideStartIsSnoozed.value = true
  273. UserDefaultsRepository.alertOverrideStartSnoozedTime.value = snoozeTime
  274. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  275. alarms.reloadIsSnoozed(key: "alertOverrideStartIsSnoozed", value: true)
  276. alarms.reloadSnoozeTime(key: "alertOverrideStartSnoozedTime", setNil: false, value: snoozeTime)
  277. }
  278. if UserDefaultsRepository.alertOverrideEndAutosnoozeNight.value {
  279. UserDefaultsRepository.alertOverrideEndIsSnoozed.value = true
  280. UserDefaultsRepository.alertOverrideEndSnoozedTime.value = snoozeTime
  281. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  282. alarms.reloadIsSnoozed(key: "alertOverrideEndIsSnoozed", value: true)
  283. alarms.reloadSnoozeTime(key: "alertOverrideEndSnoozedTime", setNil: false, value: snoozeTime)
  284. }
  285. if UserDefaultsRepository.alertCAGEAutosnoozeNight.value {
  286. UserDefaultsRepository.alertCAGEIsSnoozed.value = true
  287. UserDefaultsRepository.alertCAGESnoozedTime.value = snoozeTime
  288. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  289. alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: true)
  290. alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: false, value: snoozeTime)
  291. }
  292. if UserDefaultsRepository.alertSAGEAutosnoozeNight.value {
  293. UserDefaultsRepository.alertSAGEIsSnoozed.value = true
  294. UserDefaultsRepository.alertSAGESnoozedTime.value = snoozeTime
  295. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  296. alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: true)
  297. alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: false, value: snoozeTime)
  298. }
  299. if UserDefaultsRepository.alertPumpAutosnoozeNight.value {
  300. UserDefaultsRepository.alertPumpIsSnoozed.value = true
  301. UserDefaultsRepository.alertPumpSnoozedTime.value = snoozeTime
  302. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  303. alarms.reloadIsSnoozed(key: "alertPumpIsSnoozed", value: true)
  304. alarms.reloadSnoozeTime(key: "alertPumpSnoozedTime", setNil: false, value: snoozeTime)
  305. }
  306. if UserDefaultsRepository.alertIOBAutosnoozeNight.value {
  307. UserDefaultsRepository.alertIOBIsSnoozed.value = true
  308. UserDefaultsRepository.alertIOBSnoozedTime.value = snoozeTime
  309. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  310. alarms.reloadIsSnoozed(key: "alertIOBIsSnoozed", value: true)
  311. alarms.reloadSnoozeTime(key: "alertIOBSnoozedTime", setNil: false, value: snoozeTime)
  312. }
  313. if UserDefaultsRepository.alertCOBAutosnoozeNight.value {
  314. UserDefaultsRepository.alertCOBIsSnoozed.value = true
  315. UserDefaultsRepository.alertCOBSnoozedTime.value = snoozeTime
  316. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  317. alarms.reloadIsSnoozed(key: "alertCOBIsSnoozed", value: true)
  318. alarms.reloadSnoozeTime(key: "alertCOBSnoozedTime", setNil: false, value: snoozeTime)
  319. }
  320. }
  321. func setPreSnoozeDay(snoozeTime: Date)
  322. {
  323. if UserDefaultsRepository.alertUrgentLowAutosnoozeDay.value {
  324. UserDefaultsRepository.alertUrgentLowIsSnoozed.value = true
  325. UserDefaultsRepository.alertUrgentLowSnoozedTime.value = snoozeTime
  326. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  327. alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: true)
  328. alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: false, value: snoozeTime)
  329. }
  330. if UserDefaultsRepository.alertLowAutosnoozeDay.value {
  331. UserDefaultsRepository.alertLowIsSnoozed.value = true
  332. UserDefaultsRepository.alertLowSnoozedTime.value = snoozeTime
  333. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  334. alarms.reloadIsSnoozed(key: "alertLowIsSnoozed", value: true)
  335. alarms.reloadSnoozeTime(key: "alertLowSnoozedTime", setNil: false, value: snoozeTime)
  336. }
  337. if UserDefaultsRepository.alertHighAutosnoozeDay.value {
  338. UserDefaultsRepository.alertHighIsSnoozed.value = true
  339. UserDefaultsRepository.alertHighSnoozedTime.value = snoozeTime
  340. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  341. alarms.reloadIsSnoozed(key: "alertHighIsSnoozed", value: true)
  342. alarms.reloadSnoozeTime(key: "alertHighSnoozedTime", setNil: false, value: snoozeTime)
  343. }
  344. if UserDefaultsRepository.alertUrgentHighAutosnoozeDay.value {
  345. UserDefaultsRepository.alertUrgentHighIsSnoozed.value = true
  346. UserDefaultsRepository.alertUrgentHighSnoozedTime.value = snoozeTime
  347. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  348. alarms.reloadIsSnoozed(key: "alertUrgentHighIsSnoozed", value: true)
  349. alarms.reloadSnoozeTime(key: "alertUrgentHighSnoozedTime", setNil: false, value: snoozeTime)
  350. }
  351. if UserDefaultsRepository.alertMissedReadingAutosnoozeDay.value {
  352. UserDefaultsRepository.alertMissedReadingIsSnoozed.value = true
  353. UserDefaultsRepository.alertMissedReadingSnoozedTime.value = snoozeTime
  354. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  355. alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: true)
  356. alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: false, value: snoozeTime)
  357. }
  358. if UserDefaultsRepository.alertFastDropAutosnoozeDay.value {
  359. UserDefaultsRepository.alertFastDropIsSnoozed.value = true
  360. UserDefaultsRepository.alertFastDropSnoozedTime.value = snoozeTime
  361. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  362. alarms.reloadIsSnoozed(key: "alertFastDropIsSnoozed", value: true)
  363. alarms.reloadSnoozeTime(key: "alertFastDropSnoozedTime", setNil: false, value: snoozeTime)
  364. }
  365. if UserDefaultsRepository.alertFastRiseAutosnoozeDay.value {
  366. UserDefaultsRepository.alertFastRiseIsSnoozed.value = true
  367. UserDefaultsRepository.alertFastRiseSnoozedTime.value = snoozeTime
  368. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  369. alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: true)
  370. alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: false, value: snoozeTime)
  371. }
  372. if UserDefaultsRepository.alertNotLoopingAutosnoozeDay.value {
  373. UserDefaultsRepository.alertNotLoopingIsSnoozed.value = true
  374. UserDefaultsRepository.alertNotLoopingSnoozedTime.value = snoozeTime
  375. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  376. alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: true)
  377. alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: false, value: snoozeTime)
  378. }
  379. if UserDefaultsRepository.alertMissedBolusAutosnoozeDay.value {
  380. UserDefaultsRepository.alertMissedBolusIsSnoozed.value = true
  381. UserDefaultsRepository.alertMissedBolusSnoozedTime.value = snoozeTime
  382. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  383. alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: true)
  384. alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: false, value: snoozeTime)
  385. }
  386. if UserDefaultsRepository.alertOverrideStartAutosnoozeDay.value {
  387. UserDefaultsRepository.alertOverrideStartIsSnoozed.value = true
  388. UserDefaultsRepository.alertOverrideStartSnoozedTime.value = snoozeTime
  389. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  390. alarms.reloadIsSnoozed(key: "alertOverrideStartIsSnoozed", value: true)
  391. alarms.reloadSnoozeTime(key: "alertOverrideStartSnoozedTime", setNil: false, value: snoozeTime)
  392. }
  393. if UserDefaultsRepository.alertOverrideEndAutosnoozeDay.value {
  394. UserDefaultsRepository.alertOverrideEndIsSnoozed.value = true
  395. UserDefaultsRepository.alertOverrideEndSnoozedTime.value = snoozeTime
  396. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  397. alarms.reloadIsSnoozed(key: "alertOverrideEndIsSnoozed", value: true)
  398. alarms.reloadSnoozeTime(key: "alertOverrideEndSnoozedTime", setNil: false, value: snoozeTime)
  399. }
  400. if UserDefaultsRepository.alertCAGEAutosnoozeDay.value {
  401. UserDefaultsRepository.alertCAGEIsSnoozed.value = true
  402. UserDefaultsRepository.alertCAGESnoozedTime.value = snoozeTime
  403. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  404. alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: true)
  405. alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: false, value: snoozeTime)
  406. }
  407. if UserDefaultsRepository.alertSAGEAutosnoozeDay.value {
  408. UserDefaultsRepository.alertSAGEIsSnoozed.value = true
  409. UserDefaultsRepository.alertSAGESnoozedTime.value = snoozeTime
  410. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  411. alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: true)
  412. alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: false, value: snoozeTime)
  413. }
  414. if UserDefaultsRepository.alertPumpAutosnoozeDay.value {
  415. UserDefaultsRepository.alertPumpIsSnoozed.value = true
  416. UserDefaultsRepository.alertPumpSnoozedTime.value = snoozeTime
  417. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  418. alarms.reloadIsSnoozed(key: "alertPumpIsSnoozed", value: true)
  419. alarms.reloadSnoozeTime(key: "alertPumpSnoozedTime", setNil: false, value: snoozeTime)
  420. }
  421. if UserDefaultsRepository.alertIOBAutosnoozeDay.value {
  422. UserDefaultsRepository.alertIOBIsSnoozed.value = true
  423. UserDefaultsRepository.alertIOBSnoozedTime.value = snoozeTime
  424. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  425. alarms.reloadIsSnoozed(key: "alertIOBIsSnoozed", value: true)
  426. alarms.reloadSnoozeTime(key: "alertIOBSnoozedTime", setNil: false, value: snoozeTime)
  427. }
  428. if UserDefaultsRepository.alertCOBAutosnoozeDay.value {
  429. UserDefaultsRepository.alertCOBIsSnoozed.value = true
  430. UserDefaultsRepository.alertCOBSnoozedTime.value = snoozeTime
  431. guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }
  432. alarms.reloadIsSnoozed(key: "alertCOBIsSnoozed", value: true)
  433. alarms.reloadSnoozeTime(key: "alertCOBSnoozedTime", setNil: false, value: snoozeTime)
  434. }
  435. }
  436. override func viewDidLoad() {
  437. super.viewDidLoad()
  438. if UserDefaultsRepository.forceDarkMode.value {
  439. overrideUserInterfaceStyle = .dark
  440. }
  441. SnoozeButton.layer.cornerRadius = 5
  442. SnoozeButton.contentEdgeInsets = UIEdgeInsets(top: 10,left: 10,bottom: 10,right: 10)
  443. clockLabel.text = ""
  444. startClockTimer(time: 1)
  445. }
  446. }