TargetBehavoirStateModel.swift 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import SwiftUI
  2. extension TargetBehavoir {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Injected() var settings: SettingsManager!
  5. @Injected() var storage: FileStorage!
  6. @Published var units: GlucoseUnits = .mgdL
  7. @Published var highTemptargetRaisesSensitivity: Bool = false
  8. @Published var lowTemptargetLowersSensitivity: Bool = false
  9. @Published var sensitivityRaisesTarget: Bool = false
  10. @Published var resistanceLowersTarget: Bool = false
  11. @Published var halfBasalExerciseTarget: Decimal = 160
  12. var preferences: Preferences {
  13. settingsManager.preferences
  14. }
  15. override func subscribe() {
  16. units = settingsManager.settings.units
  17. highTemptargetRaisesSensitivity = settings.preferences.highTemptargetRaisesSensitivity
  18. lowTemptargetLowersSensitivity = settings.preferences.lowTemptargetLowersSensitivity
  19. sensitivityRaisesTarget = settings.preferences.sensitivityRaisesTarget
  20. resistanceLowersTarget = settings.preferences.resistanceLowersTarget
  21. halfBasalExerciseTarget = settings.preferences.halfBasalExerciseTarget
  22. halfBasalExerciseTarget = settings
  23. .preferences.halfBasalExerciseTarget
  24. }
  25. var isSettingUnchanged: Bool {
  26. preferences.highTemptargetRaisesSensitivity == highTemptargetRaisesSensitivity &&
  27. preferences.lowTemptargetLowersSensitivity == lowTemptargetLowersSensitivity &&
  28. preferences.sensitivityRaisesTarget == sensitivityRaisesTarget &&
  29. preferences.resistanceLowersTarget == resistanceLowersTarget &&
  30. preferences.halfBasalExerciseTarget == halfBasalExerciseTarget
  31. }
  32. func saveIfChanged() {
  33. if !isSettingUnchanged {
  34. var newSettings = storage.retrieve(OpenAPS.Settings.preferences, as: Preferences.self) ?? Preferences()
  35. newSettings.highTemptargetRaisesSensitivity = highTemptargetRaisesSensitivity
  36. newSettings.lowTemptargetLowersSensitivity = lowTemptargetLowersSensitivity
  37. newSettings.sensitivityRaisesTarget = sensitivityRaisesTarget
  38. newSettings.resistanceLowersTarget = resistanceLowersTarget
  39. newSettings.halfBasalExerciseTarget = halfBasalExerciseTarget
  40. newSettings.timestamp = Date()
  41. storage.save(newSettings, as: OpenAPS.Settings.preferences)
  42. }
  43. }
  44. }
  45. }
  46. extension TargetBehavoir.StateModel: SettingsObserver {
  47. func settingsDidChange(_: FreeAPSSettings) {
  48. units = settingsManager.settings.units
  49. }
  50. }