DynamicSettingsStateModel.swift 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import SwiftUI
  2. extension DynamicSettings {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Injected() var settings: SettingsManager!
  5. @Injected() var storage: FileStorage!
  6. @Published var useNewFormula: Bool = false
  7. @Published var enableDynamicCR: Bool = false
  8. @Published var sigmoid: Bool = false
  9. @Published var adjustmentFactor: Decimal = 0.8
  10. @Published var adjustmentFactorSigmoid: Decimal = 0.5
  11. @Published var weightPercentage: Decimal = 0.65
  12. @Published var tddAdjBasal: Bool = false
  13. @Published var threshold_setting: Decimal = 60
  14. @Published var units: GlucoseUnits = .mgdL
  15. var preferences: Preferences {
  16. settingsManager.preferences
  17. }
  18. override func subscribe() {
  19. units = settingsManager.settings.units
  20. useNewFormula = settings.preferences.useNewFormula
  21. enableDynamicCR = settings.preferences.enableDynamicCR
  22. sigmoid = settings.preferences.sigmoid
  23. adjustmentFactor = settings.preferences.adjustmentFactor
  24. adjustmentFactorSigmoid = settings.preferences.adjustmentFactorSigmoid
  25. weightPercentage = settings.preferences.weightPercentage
  26. tddAdjBasal = settings.preferences.tddAdjBasal
  27. threshold_setting = settings.preferences.threshold_setting
  28. }
  29. var unChanged: Bool {
  30. preferences.enableDynamicCR == enableDynamicCR &&
  31. preferences.adjustmentFactor == adjustmentFactor &&
  32. preferences.sigmoid == sigmoid &&
  33. preferences.adjustmentFactorSigmoid == adjustmentFactorSigmoid &&
  34. preferences.tddAdjBasal == tddAdjBasal &&
  35. preferences.threshold_setting == threshold_setting &&
  36. preferences.useNewFormula == useNewFormula &&
  37. preferences.weightPercentage == weightPercentage
  38. }
  39. func saveIfChanged() {
  40. if !unChanged {
  41. var newSettings = storage.retrieve(OpenAPS.Settings.preferences, as: Preferences.self) ?? Preferences()
  42. newSettings.enableDynamicCR = enableDynamicCR
  43. newSettings.adjustmentFactor = adjustmentFactor
  44. newSettings.sigmoid = sigmoid
  45. newSettings.adjustmentFactorSigmoid = adjustmentFactorSigmoid
  46. newSettings.tddAdjBasal = tddAdjBasal
  47. newSettings.threshold_setting = threshold_setting
  48. newSettings.useNewFormula = useNewFormula
  49. newSettings.weightPercentage = weightPercentage
  50. newSettings.timestamp = Date()
  51. storage.save(newSettings, as: OpenAPS.Settings.preferences)
  52. }
  53. }
  54. }
  55. }
  56. extension DynamicSettings.StateModel: SettingsObserver {
  57. func settingsDidChange(_: FreeAPSSettings) {
  58. units = settingsManager.settings.units
  59. }
  60. }