MealSettingsStateModel.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 maxAbsorptionTime: 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(\.maxAbsorptionTime, on: $maxAbsorptionTime.map(Int.init), initial: {
  26. maxAbsorptionTime = Decimal($0)
  27. }, map: {
  28. $0
  29. })
  30. subscribeSetting(\.minuteInterval, on: $minuteInterval.map(Int.init), initial: {
  31. minuteInterval = Decimal($0)
  32. }, map: {
  33. $0
  34. })
  35. subscribeSetting(\.delay, on: $delay.map(Int.init), initial: {
  36. delay = Decimal($0)
  37. }, map: {
  38. $0
  39. })
  40. subscribeSetting(\.individualAdjustmentFactor, on: $individualAdjustmentFactor, initial: {
  41. individualAdjustmentFactor = $0
  42. }, map: {
  43. $0
  44. })
  45. }
  46. }
  47. }
  48. extension MealSettings.StateModel: SettingsObserver {
  49. func settingsDidChange(_: FreeAPSSettings) {
  50. units = settingsManager.settings.units
  51. }
  52. }