Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ struct POSSettingsHardwareDetailView: View {
@Environment(\.posFeatureFlags) private var featureFlags
@Environment(\.dynamicTypeSize) private var dynamicTypeSize
@Environment(\.posAnalytics) private var analytics
@Environment(\.posExternalViews) private var externalViews

let settingsController: POSSettingsControllerProtocol

@State private var navigationPath: [NavigationDestination] = []
@State private var showBarcodeScanningSetupModal: Bool = false
@State private var showBarcodeScanningDocumentationModal: Bool = false
@State private var showCardReaderDocumentationModal: Bool = false
@State private var showSupport: Bool = false

private var cardReaderName: String {
if let cardReaderName = settingsController.connectedCardReader?.name {
Expand Down Expand Up @@ -88,6 +90,15 @@ struct POSSettingsHardwareDetailView: View {
PointOfSaleCardPresentPaymentAlert(alertType: alertType)
.posInteractiveDismissDisabled(alertType.isDismissDisabled)
})
.posModal(item: $posModel.cardPresentPaymentOnboardingViewContainer, onDismiss: {
posModel.cancelCardPaymentsOnboarding()
}, content: { viewContainer in
paymentsOnboardingView(from: viewContainer)
})
.posSheet(isPresented: $showSupport) {
supportForm
.interactiveDismissDisabled(true)
}
.posModal(isPresented: $showBarcodeScanningSetupModal) {
POSBarcodeScannerSetup(isPresented: $showBarcodeScanningSetupModal, analytics: analytics)
}
Expand All @@ -100,6 +111,36 @@ struct POSSettingsHardwareDetailView: View {

// MARK: - Views
private extension POSSettingsHardwareDetailView {
func paymentsOnboardingView(from onboardingViewContainer: CardPresentPaymentOnboardingViewContainer) -> some View {
onboardingViewContainer.configuration.showSupport = {
posModel.cancelCardPaymentsOnboarding()
showSupport = true
}

return PointOfSaleCardPresentPaymentOnboardingView(
viewModel: .init(onboardingViewContainer: onboardingViewContainer,
onDismissTap: {
posModel.cancelCardPaymentsOnboarding()
}))
.onAppear {
posModel.trackCardPaymentsOnboardingShown()
}
}
Comment on lines +114 to +128
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that this is all duplicative as well, could you take a look at including it in the cardReaderConnecting modifier when you look at that?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely, tracking it on WOOMOB-1621 👯


var supportForm: some View {
NavigationView {
externalViews.createSupportFormView(isPresented: $showSupport, sourceTag: Constants.supportTag)
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button(Localization.supportCancel) {
showSupport = false
}
}
}
}
.navigationViewStyle(.stack)
}

var legacyCardReadersView: some View {
VStack(spacing: POSSpacing.none) {
POSPageHeaderView(
Expand Down Expand Up @@ -354,6 +395,10 @@ private extension POSSettingsHardwareDetailView {

// MARK: - Constants
private extension POSSettingsHardwareDetailView {
enum Constants {
static let supportTag = "origin:point-of-sale"
}

enum Localization {
static let readerModelTitle = NSLocalizedString(
"pointOfSaleSettingsHardwareDetailView.readerModelTitle",
Expand Down Expand Up @@ -466,6 +511,12 @@ private extension POSSettingsHardwareDetailView {
value: "Connect your card reader and start accepting payments",
comment: "Subtitle for card reader connect button when no reader is connected."
)

static let supportCancel = NSLocalizedString(
"pointOfSaleSettingsHardwareDetailView.help.support.cancel",
value: "Cancel",
comment: "Button to dismiss the support form from POS settings."
)
}
}

Expand Down
Loading