PumpConfigRootView.swift 2.6 KB

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