Skip to content

Commit de39d34

Browse files
committed
move view container to function so we can handle support flow as well
1 parent c5e937b commit de39d34

File tree

1 file changed

+47
-8
lines changed

1 file changed

+47
-8
lines changed

Modules/Sources/PointOfSale/Presentation/Settings/POSSettingsHardwareDetailView.swift

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ struct POSSettingsHardwareDetailView: View {
66
@Environment(\.posFeatureFlags) private var featureFlags
77
@Environment(\.dynamicTypeSize) private var dynamicTypeSize
88
@Environment(\.posAnalytics) private var analytics
9+
@Environment(\.posExternalViews) private var externalViews
910

1011
let settingsController: POSSettingsControllerProtocol
1112

1213
@State private var navigationPath: [NavigationDestination] = []
1314
@State private var showBarcodeScanningSetupModal: Bool = false
1415
@State private var showBarcodeScanningDocumentationModal: Bool = false
1516
@State private var showCardReaderDocumentationModal: Bool = false
17+
@State private var showSupport: Bool = false
1618

1719
private var cardReaderName: String {
1820
if let cardReaderName = settingsController.connectedCardReader?.name {
@@ -91,15 +93,12 @@ struct POSSettingsHardwareDetailView: View {
9193
.posModal(item: $posModel.cardPresentPaymentOnboardingViewContainer, onDismiss: {
9294
posModel.cancelCardPaymentsOnboarding()
9395
}, content: { viewContainer in
94-
PointOfSaleCardPresentPaymentOnboardingView(
95-
viewModel: .init(onboardingViewContainer: viewContainer,
96-
onDismissTap: {
97-
posModel.cancelCardPaymentsOnboarding()
98-
}))
99-
.onAppear {
100-
posModel.trackCardPaymentsOnboardingShown()
101-
}
96+
paymentsOnboardingView(from: viewContainer)
10297
})
98+
.posSheet(isPresented: $showSupport) {
99+
supportForm
100+
.interactiveDismissDisabled(true)
101+
}
103102
.posModal(isPresented: $showBarcodeScanningSetupModal) {
104103
POSBarcodeScannerSetup(isPresented: $showBarcodeScanningSetupModal, analytics: analytics)
105104
}
@@ -112,6 +111,36 @@ struct POSSettingsHardwareDetailView: View {
112111

113112
// MARK: - Views
114113
private extension POSSettingsHardwareDetailView {
114+
func paymentsOnboardingView(from onboardingViewContainer: CardPresentPaymentOnboardingViewContainer) -> some View {
115+
onboardingViewContainer.configuration.showSupport = {
116+
posModel.cancelCardPaymentsOnboarding()
117+
showSupport = true
118+
}
119+
120+
return PointOfSaleCardPresentPaymentOnboardingView(
121+
viewModel: .init(onboardingViewContainer: onboardingViewContainer,
122+
onDismissTap: {
123+
posModel.cancelCardPaymentsOnboarding()
124+
}))
125+
.onAppear {
126+
posModel.trackCardPaymentsOnboardingShown()
127+
}
128+
}
129+
130+
var supportForm: some View {
131+
NavigationView {
132+
externalViews.createSupportFormView(isPresented: $showSupport, sourceTag: Constants.supportTag)
133+
.toolbar {
134+
ToolbarItem(placement: .cancellationAction) {
135+
Button(Localization.supportCancel) {
136+
showSupport = false
137+
}
138+
}
139+
}
140+
}
141+
.navigationViewStyle(.stack)
142+
}
143+
115144
var legacyCardReadersView: some View {
116145
VStack(spacing: POSSpacing.none) {
117146
POSPageHeaderView(
@@ -366,6 +395,10 @@ private extension POSSettingsHardwareDetailView {
366395

367396
// MARK: - Constants
368397
private extension POSSettingsHardwareDetailView {
398+
enum Constants {
399+
static let supportTag = "origin:point-of-sale"
400+
}
401+
369402
enum Localization {
370403
static let readerModelTitle = NSLocalizedString(
371404
"pointOfSaleSettingsHardwareDetailView.readerModelTitle",
@@ -478,6 +511,12 @@ private extension POSSettingsHardwareDetailView {
478511
value: "Connect your card reader and start accepting payments",
479512
comment: "Subtitle for card reader connect button when no reader is connected."
480513
)
514+
515+
static let supportCancel = NSLocalizedString(
516+
"pointOfSaleSettingsHardwareDetailView.help.support.cancel",
517+
value: "Cancel",
518+
comment: "Button to dismiss the support form from POS settings."
519+
)
481520
}
482521
}
483522

0 commit comments

Comments
 (0)