import SwiftUI import Swinject extension PumpConfig { struct RootView: BaseView { let resolver: Resolver let displayClose: Bool @StateObject var state = StateModel() @State private var shouldDisplayHint: Bool = false @State var hintDetent = PresentationDetent.large @State var selectedVerboseHint: String? @State var hintLabel: String? @State private var decimalPlaceholder: Decimal = 0.0 @State private var booleanPlaceholder: Bool = false @State var showPumpSelection: Bool = false @Environment(\.colorScheme) var colorScheme @Environment(AppState.self) var appState var body: some View { NavigationView { Form { Section( header: Text("Pump Integration to Trio"), content: { if let pumpState = state.pumpState { Button { state.setupPump = true } label: { HStack { Image(uiImage: pumpState.image ?? UIImage()).padding() Text(pumpState.name) } } if state.alertNotAck { Spacer() Button("Acknowledge all alerts") { state.ack() } } } else { VStack { Button { showPumpSelection.toggle() } label: { Text("Add Pump") .font(.title3) } .frame(maxWidth: .infinity, alignment: .center) .buttonStyle(.bordered) HStack(alignment: .top) { Text( "Pair a compatible pump with Trio. See details for available devices." ) .font(.footnote) .foregroundColor(.secondary) .lineLimit(nil) Spacer() Button( action: { hintLabel = "Pump Pairing to Trio" selectedVerboseHint = "Explanation… limitation… etc." shouldDisplayHint.toggle() }, label: { HStack { Image(systemName: "questionmark.circle") } } ).buttonStyle(BorderlessButtonStyle()) }.padding(.top) }.padding(.vertical) } } ) .padding(.top) .listRowBackground(Color.chart) } .scrollContentBackground(.hidden).background(appState.trioBackgroundColor(for: colorScheme)) .onAppear(perform: configureView) .navigationTitle("Insulin Pump") .navigationBarTitleDisplayMode(.automatic) .navigationBarItems(leading: displayClose ? Button("Close", action: state.hideModal) : nil) .sheet(isPresented: $shouldDisplayHint) { SettingInputHintView( hintDetent: $hintDetent, shouldDisplayHint: $shouldDisplayHint, hintLabel: hintLabel ?? "", hintText: selectedVerboseHint ?? "", sheetTitle: "Help" ) } .confirmationDialog("Pump Model", isPresented: $showPumpSelection) { Button("Medtronic") { state.addPump(.minimed) } Button("Omnipod Eros") { state.addPump(.omnipod) } Button("Omnipod Dash") { state.addPump(.omnipodBLE) } Button("Pump Simulator") { state.addPump(.simulator) } } message: { Text("Select Pump Model") } } .sheet(isPresented: $state.setupPump) { if let pumpManager = state.provider.apsManager.pumpManager { PumpSettingsView( pumpManager: pumpManager, bluetoothManager: state.provider.apsManager.bluetoothManager!, completionDelegate: state, setupDelegate: state ) } else { PumpSetupView( pumpType: state.setupPumpType, pumpInitialSettings: state.initialSettings, bluetoothManager: state.provider.apsManager.bluetoothManager!, completionDelegate: state, setupDelegate: state ) } } } } }