MealSettingsStateModel.swift 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import SwiftUI
  2. extension MealSettings {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Published var units: GlucoseUnits = .mgdL
  5. @Published var useFPUconversion: Bool = false
  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 minuteInterval: Decimal = 30
  11. @Published var delay: Decimal = 60
  12. @Published var maxMealAbsorptionTime: Decimal = 6
  13. override func subscribe() {
  14. units = settingsManager.settings.units
  15. subscribeSetting(\.maxCarbs, on: $maxCarbs) { maxCarbs = $0 }
  16. subscribeSetting(\.maxFat, on: $maxFat) { maxFat = $0 }
  17. subscribeSetting(\.maxProtein, on: $maxProtein) { maxProtein = $0 }
  18. subscribePreferencesSetting(\.maxMealAbsorptionTime, on: $maxMealAbsorptionTime) { maxMealAbsorptionTime = $0 }
  19. subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
  20. // "Fat and Protein Delay"
  21. subscribeSetting(\.delay, on: $delay) { delay = $0 }
  22. // "Spread Interval"
  23. subscribeSetting(\.minuteInterval, on: $minuteInterval) { minuteInterval = $0 }
  24. // "Fat and Protein Percentage"
  25. subscribeSetting(\.individualAdjustmentFactor, on: $individualAdjustmentFactor) { individualAdjustmentFactor = $0 }
  26. }
  27. }
  28. }
  29. extension MealSettings.StateModel: SettingsObserver {
  30. func settingsDidChange(_: TrioSettings) {
  31. units = settingsManager.settings.units
  32. }
  33. }