AutosensSettingsStateModel.swift 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import SwiftUI
  2. extension AutosensSettings {
  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 autosensMax: Decimal = 1.2
  8. @Published var autosensMin: Decimal = 0.7
  9. @Published var rewindResetsAutosens: Bool = true
  10. var preferences: Preferences {
  11. settingsManager.preferences
  12. }
  13. override func subscribe() {
  14. units = settingsManager.settings.units
  15. autosensMax = settings.preferences.autosensMax
  16. autosensMin = settings.preferences.autosensMin
  17. rewindResetsAutosens = settings.preferences.rewindResetsAutosens
  18. }
  19. var isSettingUnchanged: Bool {
  20. preferences.autosensMax == autosensMax &&
  21. preferences.autosensMin == autosensMin &&
  22. preferences.rewindResetsAutosens == rewindResetsAutosens
  23. }
  24. func saveIfChanged() {
  25. if !isSettingUnchanged {
  26. var newSettings = storage.retrieve(OpenAPS.Settings.preferences, as: Preferences.self) ?? Preferences()
  27. newSettings.autosensMax = autosensMax
  28. newSettings.autosensMin = autosensMin
  29. newSettings.rewindResetsAutosens = rewindResetsAutosens
  30. newSettings.timestamp = Date()
  31. storage.save(newSettings, as: OpenAPS.Settings.preferences)
  32. }
  33. }
  34. }
  35. }
  36. extension AutosensSettings.StateModel: SettingsObserver {
  37. func settingsDidChange(_: FreeAPSSettings) {
  38. units = settingsManager.settings.units
  39. }
  40. }