Skip to content
Last updated

Tyro Settings View

A button must be provided for the administrators of your POS application to access Tyro settings. Render the TyroSettingsView to allow administrators to set a mandatory refund password and to access additional settings in the future. Add this view to your application upon click of the settings button. Your POS administrators must be authenticated before this button can be accessed.

Use the TyroSettingsView SwiftUI View in your application

TyroSettingsView()

Example Usage

struct Home: View {
  @Environment(\.scenePhase) private var scenePhase: ScenePhase
  private var contentViewModel: ContentViewModel

  @State private var isSettingsPresented = false
  @State private var selectedIndex: Int = 0

  ...

  var body: some View {
    TabView(selection: $selectedIndex) {
      NavigationStack {
        VStack {
          HStack {
            Spacer(minLength: 0)
            Image(.tyroLogo)
              .resizable()
              .aspectRatio(contentMode: .fit)
              .frame(maxWidth: 100)
              .padding()
            Spacer(minLength: 0)
            Button(action: {
              isSettingsPresented.toggle()
            }) {
              Image(systemName: "gear")
                .renderingMode(.template)
                .resizable()
                .frame(width: 25, height: 25)
            }.fullScreenCover(isPresented: $isSettingsPresented) {
              TyroSettingsViewWrapper()
            }
          }.padding()
          ContentView(viewModel: contentViewModel)
        }.navigationTitle("")
      }.tabItem {
        Label("Home", systemImage: "house")
      }.tag(0)

      NavigationStack {
        TyroSettingsView().navigationTitle("Tyro Settings")
      }.tabItem {
        Label("Admin", systemImage: "gear")
      }.tag(1)
    }
  }
}

struct TyroSettingsViewWrapper: View {
  @Environment(\.dismiss) var dismiss
  var body: some View {
    NavigationStack {
      ZStack {
        TyroSettingsView()
      }.toolbar(content: {
        Button {
          dismiss()
        } label: {
          Image(systemName: "xmark")
        }
      })
    }
  }
}
...