FPUConfigStateModel.swift 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import SwiftUI
  2. extension FPUConfig {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Published var useFPUconversion = false
  5. @Published var individualAdjustmentFactor: Decimal = 0
  6. @Published var timeCap: Decimal = 0
  7. @Published var minuteInterval: Decimal = 0
  8. override func subscribe() {
  9. subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
  10. subscribeSetting(\.timeCap, on: $timeCap) { timeCap = $0 }
  11. subscribeSetting(\.timeCap, on: $timeCap, initial: {
  12. let value = max(min($0, 12), 8)
  13. timeCap = value
  14. }, map: {
  15. $0
  16. })
  17. subscribeSetting(\.minuteInterval, on: $minuteInterval.map(Int.init), initial: {
  18. let value = max(min($0, 90), 10)
  19. minuteInterval = Decimal(value)
  20. }, map: {
  21. $0
  22. })
  23. subscribeSetting(\.individualAdjustmentFactor, on: $individualAdjustmentFactor, initial: {
  24. let value = max(min($0, 1.2), 0.3)
  25. individualAdjustmentFactor = value
  26. }, map: {
  27. $0
  28. })
  29. }
  30. }
  31. }