PumpConfigRootView.swift 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. setupDelegate: state
  42. )
  43. } else {
  44. PumpSetupView(
  45. pumpType: state.setupPumpType,
  46. pumpInitialSettings: state.initialSettings,
  47. bluetoothManager: state.provider.apsManager.bluetoothManager!,
  48. completionDelegate: state,
  49. setupDelegate: state
  50. )
  51. }
  52. }
  53. }
  54. }
  55. }
  56. }