PumpConfigRootView.swift 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import SwiftUI
  2. import Swinject
  3. extension PumpConfig {
  4. struct RootView: BaseView {
  5. let resolver: Resolver
  6. @StateObject var state = StateModel()
  7. var body: some View {
  8. NavigationView {
  9. Form {
  10. Section(header: Text("Model")) {
  11. if let pumpState = state.pumpState {
  12. Button {
  13. state.setupPump = true
  14. } label: {
  15. HStack {
  16. Image(uiImage: pumpState.image ?? UIImage()).padding()
  17. Text(pumpState.name)
  18. }
  19. }
  20. if state.alertNotAck {
  21. Spacer()
  22. Button("Acknowledge all alerts") { state.ack() }
  23. }
  24. } else {
  25. Button("Add Medtronic") { state.addPump(.minimed) }
  26. Button("Add Omnipod") { state.addPump(.omnipod) }
  27. Button("Add Omnipod Dash") { state.addPump(.omnipodBLE) }
  28. Button("Add Simulator") { state.addPump(.simulator) }
  29. }
  30. }
  31. }
  32. .onAppear(perform: configureView)
  33. .navigationTitle("Pump config")
  34. .navigationBarTitleDisplayMode(.automatic)
  35. .sheet(isPresented: $state.setupPump) {
  36. if let pumpManager = state.provider.apsManager.pumpManager {
  37. PumpSettingsView(
  38. pumpManager: pumpManager,
  39. bluetoothManager: state.provider.apsManager.bluetoothManager!,
  40. completionDelegate: state
  41. )
  42. } else {
  43. PumpSetupView(
  44. pumpType: state.setupPumpType,
  45. pumpInitialSettings: state.initialSettings,
  46. bluetoothManager: state.provider.apsManager.bluetoothManager!,
  47. completionDelegate: state,
  48. setupDelegate: state
  49. )
  50. }
  51. }
  52. }
  53. }
  54. }
  55. }