PumpConfigStateModel.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import LoopKit
  2. import LoopKitUI
  3. import SwiftDate
  4. import SwiftUI
  5. extension PumpConfig {
  6. final class StateModel: BaseStateModel<Provider> {
  7. @Published var setupPump = false
  8. private(set) var setupPumpType: PumpType = .minimed
  9. @Published var pumpState: PumpDisplayState?
  10. private(set) var initialSettings: PumpInitialSettings = .default
  11. override func subscribe() {
  12. provider.pumpDisplayState
  13. .receive(on: DispatchQueue.main)
  14. .assign(to: \.pumpState, on: self)
  15. .store(in: &lifetime)
  16. let basalSchedule = BasalRateSchedule(
  17. dailyItems: provider.basalProfile().map {
  18. RepeatingScheduleValue(startTime: $0.minutes.minutes.timeInterval, value: Double($0.rate))
  19. }
  20. )
  21. let pumpSettings = provider.pumpSettings()
  22. initialSettings = PumpInitialSettings(
  23. maxBolusUnits: Double(pumpSettings.maxBolus),
  24. maxBasalRateUnitsPerHour: Double(pumpSettings.maxBasal),
  25. basalSchedule: basalSchedule!
  26. )
  27. }
  28. func addPump(_ type: PumpType) {
  29. setupPump = true
  30. setupPumpType = type
  31. }
  32. }
  33. }
  34. extension PumpConfig.StateModel: CompletionDelegate {
  35. func completionNotifyingDidComplete(_: CompletionNotifying) {
  36. setupPump = false
  37. }
  38. }
  39. extension PumpConfig.StateModel: PumpManagerOnboardingDelegate {
  40. func pumpManagerOnboarding(didCreatePumpManager pumpManager: PumpManagerUI) {
  41. provider.setPumpManager(pumpManager)
  42. if let insulinType = pumpManager.status.insulinType {
  43. settingsManager.updateInsulinCurve(insulinType)
  44. }
  45. setupPump = false
  46. }
  47. func pumpManagerOnboarding(didOnboardPumpManager _: PumpManagerUI) {
  48. // nothing to do
  49. }
  50. // func pumpManagerSetupViewController(_: PumpManagerSetupViewController, didSetUpPumpManager pumpManager: PumpManagerUI) {
  51. // provider.setPumpManager(pumpManager)
  52. // setupPump = false
  53. // }
  54. }