PumpSettingsEditorStateModel.swift 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import SwiftUI
  2. extension PumpSettingsEditor {
  3. final class StateModel: BaseStateModel<Provider> {
  4. @Published var maxBasal: Decimal = 0.0
  5. @Published var maxBolus: Decimal = 0.0
  6. @Published var dia: Decimal = 0.0
  7. @Published var maxCarbs: Decimal = 1000
  8. @Published var syncInProgress = false
  9. override func subscribe() {
  10. let settings = provider.settings()
  11. maxBasal = settings.maxBasal
  12. maxBolus = settings.maxBolus
  13. dia = settings.insulinActionCurve
  14. subscribeSetting(\.maxCarbs, on: $maxCarbs) { maxCarbs = $0 }
  15. }
  16. func save() {
  17. syncInProgress = true
  18. let settings = PumpSettings(
  19. insulinActionCurve: dia,
  20. maxBolus: maxBolus,
  21. maxBasal: maxBasal
  22. )
  23. provider.save(settings: settings)
  24. .receive(on: DispatchQueue.main)
  25. .sink { _ in
  26. self.syncInProgress = false
  27. } receiveValue: {}
  28. .store(in: &lifetime)
  29. }
  30. }
  31. }