| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- //
- // AttachPodView.swift
- // OmniKit
- //
- // Created by Pete Schwamb on 2/23/21.
- // Copyright © 2021 LoopKit Authors. All rights reserved.
- //
- import SwiftUI
- import LoopKitUI
- struct AttachPodView: View {
-
- enum Modal: Int, Identifiable {
- var id: Int { rawValue }
-
- case attachConfirmationModal
- case cancelModal
- }
-
- @Environment(\.verticalSizeClass) var verticalSizeClass
-
- var didConfirmAttachment: () -> Void
- var didRequestDeactivation: () -> Void
-
- @State private var activeModal: Modal?
-
- var body: some View {
- GuidePage(content: {
- VStack {
- LeadingImage("Pod")
- HStack {
- InstructionList(instructions: [
- LocalizedString("Prepare site.", comment: "Label text for step one of attach pod instructions"),
- LocalizedString("Remove the Pod's clear needle cap and check cannula. Then remove paper backing.", comment: "Label text for step two of attach pod instructions"),
- LocalizedString("Check Pod, apply to site, then confirm pod attachment.", comment: "Label text for step three of attach pod instructions")
- ])
- }
- .padding(.bottom, 8)
- }
- .accessibility(sortPriority: 1)
- }) {
- Button(action: {
- activeModal = .attachConfirmationModal
- }) {
- FrameworkLocalText("Continue", comment: "Action button title for attach pod view")
- .accessibility(identifier: "button_next_action")
- .actionButtonStyle(.primary)
- }
- .animation(nil)
- .padding()
- .background(Color(UIColor.systemBackground))
- .zIndex(1)
- }
- .animation(.default)
- .alert(item: $activeModal, content: self.alert(for:))
- .navigationBarTitle(LocalizedString("Attach Pod", comment: "navigation bar title attach pod"), displayMode: .automatic)
- .navigationBarItems(trailing: cancelButton)
- .navigationBarBackButtonHidden(true)
- }
-
- var cancelButton: some View {
- Button(LocalizedString("Cancel", comment: "Cancel button text in navigation bar on pair pod UI")) {
- activeModal = .cancelModal
- }
- .accessibility(identifier: "button_cancel")
- }
- private func alert(for modal: Modal) -> Alert {
- switch modal {
- case .attachConfirmationModal:
- return confirmationModal
- case .cancelModal:
- return cancelPairingModal
- }
- }
-
- var confirmationModal: Alert {
- return Alert(
- title: FrameworkLocalText("Confirm Pod Attachment", comment: "Alert title for confirm pod attachment"),
- message: FrameworkLocalText("Please confirm that the Pod is securely attached to your body.\n\nThe cannula can be inserted only once with each Pod. Tap “Confirm” when Pod is attached.", comment: "Alert message body for confirm pod attachment"),
- primaryButton: .default(FrameworkLocalText("Confirm", comment: "Button title for confirm attachment option"), action: didConfirmAttachment),
- secondaryButton: .cancel()
- )
- }
-
- var cancelPairingModal: Alert {
- return Alert(
- title: FrameworkLocalText("Are you sure you want to cancel Pod setup?", comment: "Alert title for cancel pairing modal"),
- message: FrameworkLocalText("If you cancel Pod setup, the current Pod will be deactivated and will be unusable.", comment: "Alert message body for confirm pod attachment"),
- primaryButton: .destructive(FrameworkLocalText("Yes, Deactivate Pod", comment: "Button title for confirm deactivation option"), action: didRequestDeactivation),
- secondaryButton: .default(FrameworkLocalText("No, Continue With Pod", comment: "Continue pairing button title of in pairing cancel modal"))
- )
- }
- }
- struct AttachPodView_Previews: PreviewProvider {
- static var previews: some View {
- NavigationView {
- ZStack {
- Color(UIColor.secondarySystemBackground).edgesIgnoringSafeArea(.all)
- AttachPodView(didConfirmAttachment: {}, didRequestDeactivation: {})
- }
- }
- }
- }
|