BolusCalculatorStateModel.swift 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import SwiftUI
  2. extension BolusCalculatorConfig {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Published var units: GlucoseUnits = .mgdL
  5. @Published var overrideFactor: Decimal = 0
  6. @Published var fattyMeals: Bool = false
  7. @Published var fattyMealFactor: Decimal = 0
  8. @Published var sweetMeals: Bool = false
  9. @Published var sweetMealFactor: Decimal = 0
  10. @Published var displayPresets: Bool = true
  11. override func subscribe() {
  12. units = settingsManager.settings.units
  13. subscribeSetting(\.overrideFactor, on: $overrideFactor, initial: {
  14. let value = max(min($0, 1.2), 0.1)
  15. overrideFactor = value
  16. }, map: {
  17. $0
  18. })
  19. subscribeSetting(\.fattyMeals, on: $fattyMeals) { fattyMeals = $0 }
  20. subscribeSetting(\.displayPresets, on: $displayPresets) { displayPresets = $0 }
  21. subscribeSetting(\.fattyMealFactor, on: $fattyMealFactor, initial: {
  22. let value = max(min($0, 1.2), 0.1)
  23. fattyMealFactor = value
  24. }, map: {
  25. $0
  26. })
  27. subscribeSetting(\.sweetMeals, on: $sweetMeals) { sweetMeals = $0 }
  28. subscribeSetting(\.sweetMealFactor, on: $sweetMealFactor, initial: {
  29. let value = max(min($0, 5), 1)
  30. sweetMealFactor = value
  31. }, map: {
  32. $0
  33. })
  34. }
  35. }
  36. }
  37. extension BolusCalculatorConfig.StateModel: SettingsObserver {
  38. func settingsDidChange(_: FreeAPSSettings) {
  39. units = settingsManager.settings.units
  40. }
  41. }