MealSettingsStateModel.swift 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. override func subscribe() {
  14. units = settingsManager.settings.units
  15. subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
  16. subscribeSetting(\.maxCarbs, on: $maxCarbs) { maxCarbs = $0 }
  17. subscribeSetting(\.maxFat, on: $maxFat) { maxFat = $0 }
  18. subscribeSetting(\.maxProtein, on: $maxProtein) { maxProtein = $0 }
  19. subscribeSetting(\.timeCap, on: $timeCap.map(Int.init), initial: {
  20. timeCap = Decimal($0)
  21. }, map: {
  22. $0
  23. })
  24. subscribeSetting(\.minuteInterval, on: $minuteInterval.map(Int.init), initial: {
  25. minuteInterval = Decimal($0)
  26. }, map: {
  27. $0
  28. })
  29. subscribeSetting(\.delay, on: $delay.map(Int.init), initial: {
  30. delay = Decimal($0)
  31. }, map: {
  32. $0
  33. })
  34. subscribeSetting(\.individualAdjustmentFactor, on: $individualAdjustmentFactor, initial: {
  35. individualAdjustmentFactor = $0
  36. }, map: {
  37. $0
  38. })
  39. }
  40. }
  41. }
  42. extension MealSettings.StateModel: SettingsObserver {
  43. func settingsDidChange(_: FreeAPSSettings) {
  44. units = settingsManager.settings.units
  45. }
  46. }