AutosensSettingsStateModel.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Observation
  2. import SwiftUI
  3. extension AutosensSettings {
  4. @Observable final class StateModel: BaseStateModel<Provider> {
  5. @ObservationIgnored @Injected() var settings: SettingsManager!
  6. @ObservationIgnored @Injected() var storage: FileStorage!
  7. var units: GlucoseUnits = .mgdL
  8. var autosensMax: Decimal = 1.2
  9. var autosensMin: Decimal = 0.7
  10. var rewindResetsAutosens: Bool = true
  11. var preferences: Preferences {
  12. settingsManager.preferences
  13. }
  14. override func subscribe() {
  15. units = settingsManager.settings.units
  16. autosensMax = settings.preferences.autosensMax
  17. autosensMin = settings.preferences.autosensMin
  18. rewindResetsAutosens = settings.preferences.rewindResetsAutosens
  19. }
  20. var isSettingUnchanged: Bool {
  21. preferences.autosensMax == autosensMax &&
  22. preferences.autosensMin == autosensMin &&
  23. preferences.rewindResetsAutosens == rewindResetsAutosens
  24. }
  25. func saveIfChanged() {
  26. if !isSettingUnchanged {
  27. var newSettings = storage.retrieve(OpenAPS.Settings.preferences, as: Preferences.self) ?? Preferences()
  28. newSettings.autosensMax = autosensMax
  29. newSettings.autosensMin = autosensMin
  30. newSettings.rewindResetsAutosens = rewindResetsAutosens
  31. newSettings.timestamp = Date()
  32. storage.save(newSettings, as: OpenAPS.Settings.preferences)
  33. }
  34. }
  35. }
  36. }
  37. extension AutosensSettings.StateModel: SettingsObserver {
  38. func settingsDidChange(_: FreeAPSSettings) {
  39. units = settingsManager.settings.units
  40. }
  41. }