FPUConfigStateModel.swift 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. @Published var delay: Decimal = 0
  9. override func subscribe() {
  10. subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
  11. subscribeSetting(\.timeCap, on: $timeCap) { timeCap = $0 }
  12. subscribeSetting(\.timeCap, on: $timeCap, initial: {
  13. let value = max(min($0, 12), 6)
  14. timeCap = value
  15. }, map: {
  16. $0
  17. })
  18. subscribeSetting(\.minuteInterval, on: $minuteInterval.map(Int.init), initial: {
  19. let value = max(min($0, 60), 10)
  20. minuteInterval = Decimal(value)
  21. }, map: {
  22. $0
  23. })
  24. subscribeSetting(\.delay, on: $delay.map(Int.init), initial: {
  25. let value = max(min($0, 120), 60)
  26. delay = Decimal(value)
  27. }, map: {
  28. $0
  29. })
  30. subscribeSetting(\.individualAdjustmentFactor, on: $individualAdjustmentFactor, initial: {
  31. let value = max(min($0, 1.2), 0.1)
  32. individualAdjustmentFactor = value
  33. }, map: {
  34. $0
  35. })
  36. }
  37. }
  38. }