MealSettingsStateModel.swift 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import SwiftUI
  2. extension MealSettings {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Published var units: GlucoseUnits = .mgdL
  5. @Published var useFPUconversion: Bool = true
  6. @Published var maxCarbs: Decimal = 250
  7. @Published var maxFat: Decimal = 250
  8. @Published var maxProtein: Decimal = 250
  9. @Published var individualAdjustmentFactor: Decimal = 0.5
  10. @Published var timeCap: Decimal = 8
  11. @Published var minuteInterval: Decimal = 30
  12. @Published var delay: Decimal = 60
  13. @Published var maxMealAbsorptionTime: Decimal = 6
  14. override func subscribe() {
  15. units = settingsManager.settings.units
  16. subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
  17. subscribeSetting(\.maxCarbs, on: $maxCarbs) { maxCarbs = $0 }
  18. subscribeSetting(\.maxFat, on: $maxFat) { maxFat = $0 }
  19. subscribeSetting(\.maxProtein, on: $maxProtein) { maxProtein = $0 }
  20. subscribeSetting(\.timeCap, on: $timeCap.map(Int.init), initial: {
  21. timeCap = Decimal($0)
  22. }, map: {
  23. $0
  24. })
  25. subscribePreferencesSetting(\.maxMealAbsorptionTime, on: $maxMealAbsorptionTime) { maxMealAbsorptionTime = $0 }
  26. subscribeSetting(\.minuteInterval, on: $minuteInterval.map(Int.init), initial: {
  27. minuteInterval = Decimal($0)
  28. }, map: {
  29. $0
  30. })
  31. subscribeSetting(\.delay, on: $delay.map(Int.init), initial: {
  32. delay = Decimal($0)
  33. }, map: {
  34. $0
  35. })
  36. subscribeSetting(\.individualAdjustmentFactor, on: $individualAdjustmentFactor, initial: {
  37. individualAdjustmentFactor = $0
  38. }, map: {
  39. $0
  40. })
  41. }
  42. }
  43. }
  44. extension MealSettings.StateModel: SettingsObserver {
  45. func settingsDidChange(_: FreeAPSSettings) {
  46. units = settingsManager.settings.units
  47. }
  48. }