FPUConfigStateModel.swift 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import SwiftUI
  2. extension FPUConfig {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Published var maxCarbs: Decimal = 250
  5. @Published var maxFat: Decimal = 250
  6. @Published var maxProtein: Decimal = 250
  7. @Published var individualAdjustmentFactor: Decimal = 0
  8. @Published var timeCap: Decimal = 0
  9. @Published var minuteInterval: Decimal = 0
  10. @Published var delay: Decimal = 0
  11. override func subscribe() {
  12. subscribeSetting(\.maxCarbs, on: $maxCarbs) { maxCarbs = $0 }
  13. subscribeSetting(\.maxFat, on: $maxFat) { maxFat = $0 }
  14. subscribeSetting(\.maxProtein, on: $maxProtein) { maxProtein = $0 }
  15. subscribeSetting(\.timeCap, on: $timeCap.map(Int.init), initial: {
  16. let value = max(min($0, 12), 5)
  17. timeCap = Decimal(value)
  18. }, map: {
  19. $0
  20. })
  21. subscribeSetting(\.minuteInterval, on: $minuteInterval.map(Int.init), initial: {
  22. let value = max(min($0, 60), 10)
  23. minuteInterval = Decimal(value)
  24. }, map: {
  25. $0
  26. })
  27. subscribeSetting(\.delay, on: $delay.map(Int.init), initial: {
  28. let value = max(min($0, 120), 60)
  29. delay = Decimal(value)
  30. }, map: {
  31. $0
  32. })
  33. subscribeSetting(\.individualAdjustmentFactor, on: $individualAdjustmentFactor, initial: {
  34. let value = max(min($0, 1.2), 0.1)
  35. individualAdjustmentFactor = value
  36. }, map: {
  37. $0
  38. })
  39. }
  40. }
  41. }