import SwiftUI import Swinject extension AppleHealthKit { struct RootView: BaseView { let resolver: Resolver @StateObject var state = StateModel() @State private var shouldDisplayHint: Bool = false @State var hintDetent = PresentationDetent.large @State var selectedVerboseHint: AnyView? @State var hintLabel: String? @State private var decimalPlaceholder: Decimal = 0.0 @State private var booleanPlaceholder: Bool = false @Environment(\.colorScheme) var colorScheme @Environment(AppState.self) var appState var body: some View { List { SettingInputSection( decimalValue: $decimalPlaceholder, booleanValue: $state.useAppleHealth, shouldDisplayHint: $shouldDisplayHint, selectedVerboseHint: Binding( get: { selectedVerboseHint }, set: { selectedVerboseHint = $0.map { AnyView($0) } hintLabel = "Connect to Apple Health" } ), units: state.units, type: .boolean, label: "Connect to Apple Health", miniHint: "Allow Trio to read from and write to Apple Health.", verboseHint: VStack(alignment: .leading, spacing: 10) { Text("Default: OFF").bold() Text("This allows Trio to read from and write to Apple Health.") Text("Warning: You must also give permissions in iOS System Settings for the Health app.").bold() }, headerText: "Apple Health Integration" ) if !state.needShowInformationTextForSetPermissions { Section { VStack { HStack { Image(systemName: "exclamationmark.circle.fill") Text("Give Apple Health Write Permissions") }.padding(.bottom) VStack(alignment: .leading, spacing: 5) { Text("1. Open the Settings app on your iOS device.") Text( "2. Scroll down or type \"Health\" in the settings search bar and select the \"Health\" app." ) Text("3. Tap on \"Data Access & Devices\".") Text("4. Find and select \"Trio\" from the list of apps.") Text("5. Ensure that the \"Write Data\" option is enabled for the desired health metrics.") }.font(.footnote) } .padding(.vertical) .foregroundColor(Color.secondary) }.listRowBackground(Color.chart) } } .listSectionSpacing(sectionSpacing) .sheet(isPresented: $shouldDisplayHint) { SettingInputHintView( hintDetent: $hintDetent, shouldDisplayHint: $shouldDisplayHint, hintLabel: hintLabel ?? "", hintText: selectedVerboseHint ?? AnyView(EmptyView()), sheetTitle: "Help" ) } .scrollContentBackground(.hidden).background(appState.trioBackgroundColor(for: colorScheme)) .onAppear(perform: configureView) .navigationTitle("Apple Health") .navigationBarTitleDisplayMode(.automatic) } } }