Skip to content
Merged
10 changes: 10 additions & 0 deletions WooCommerce/Classes/Analytics/TracksProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,16 @@ private extension TracksProvider {
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupFlowShown,
WooAnalyticsStat.pointOfSaleBarcodeScanningSuccess,
WooAnalyticsStat.pointOfSaleBarcodeScanningFailed,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupScannerSelected,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupNextTapped,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupBackTapped,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupOpenSystemSettingsTapped,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupTestScanSuccess,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupTestScanFailed,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupTestScanTimedOut,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupDismissed,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupRetryTapped,
WooAnalyticsStat.pointOfSaleBarcodeScannerSetupScannerConnected,

// Order
WooAnalyticsStat.orderCreationSuccess,
Expand Down
10 changes: 10 additions & 0 deletions WooCommerce/Classes/Analytics/WooAnalyticsStat.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1308,6 +1308,16 @@ enum WooAnalyticsStat: String {
case pointOfSaleBarcodeScannerSetupFlowShown = "barcode_scanner_setup_flow_shown"
case pointOfSaleBarcodeScanningSuccess = "barcode_scanned"
case pointOfSaleBarcodeScanningFailed = "barcode_scanning_failed"
case pointOfSaleBarcodeScannerSetupScannerSelected = "barcode_scanner_setup_scanner_selected"
case pointOfSaleBarcodeScannerSetupNextTapped = "barcode_scanner_setup_next_tapped"
case pointOfSaleBarcodeScannerSetupBackTapped = "barcode_scanner_setup_back_tapped"
case pointOfSaleBarcodeScannerSetupOpenSystemSettingsTapped = "barcode_scanner_setup_open_system_settings_tapped"
case pointOfSaleBarcodeScannerSetupTestScanSuccess = "barcode_scanner_setup_test_scan_success"
case pointOfSaleBarcodeScannerSetupTestScanFailed = "barcode_scanner_setup_test_scan_failed"
case pointOfSaleBarcodeScannerSetupTestScanTimedOut = "barcode_scanner_setup_test_scan_timed_out"
case pointOfSaleBarcodeScannerSetupDismissed = "barcode_scanner_setup_dismissed"
case pointOfSaleBarcodeScannerSetupRetryTapped = "barcode_scanner_setup_retry_tapped"
case pointOfSaleBarcodeScannerSetupScannerConnected = "barcode_scanner_setup_scanner_connected"

// MARK: Custom Fields events
case productDetailCustomFieldsTapped = "product_detail_custom_fields_tapped"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ extension WooAnalyticsEvent {
static let scanDurationMs = "scan_duration_ms"
static let barcodeLength = "barcode_length"
static let failReason = "fail_reason"
static let scanner = "scanner"
static let step = "step"
static let scanValue = "scan_value"
}

static func paymentsOnboardingShown() -> WooAnalyticsEvent {
Expand Down Expand Up @@ -214,6 +217,72 @@ extension WooAnalyticsEvent {
Key.failReason: failReason
])
}

static func barcodeScannerSetupScannerSelected(scanner: PointOfSaleBarcodeScannerType) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupScannerSelected,
properties: [Key.scanner: scanner.analyticsName])
}

static func barcodeScannerSetupNextTapped(scanner: PointOfSaleBarcodeScannerType, step: String) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupNextTapped,
properties: [
Key.scanner: scanner.analyticsName,
Key.step: step
])
}

static func barcodeScannerSetupBackTapped(scanner: PointOfSaleBarcodeScannerType, step: String) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupBackTapped,
properties: [
Key.scanner: scanner.analyticsName,
Key.step: step
])
}

static func barcodeScannerSetupOpenSystemSettingsTapped(scanner: PointOfSaleBarcodeScannerType) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupOpenSystemSettingsTapped,
properties: [Key.scanner: scanner.analyticsName])
}

static func barcodeScannerSetupTestScanSuccess(scanner: PointOfSaleBarcodeScannerType) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupTestScanSuccess,
properties: [Key.scanner: scanner.analyticsName])
}

static func barcodeScannerSetupTestScanFailed(scanner: PointOfSaleBarcodeScannerType, scanValue: String) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupTestScanFailed,
properties: [
Key.scanner: scanner.analyticsName,
Key.scanValue: scanValue
])
}

static func barcodeScannerSetupTestScanTimedOut(scanner: PointOfSaleBarcodeScannerType) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupTestScanTimedOut,
properties: [Key.scanner: scanner.analyticsName])
}

static func barcodeScannerSetupDismissed(scanner: PointOfSaleBarcodeScannerType? = nil, step: String? = nil) -> WooAnalyticsEvent {
var properties: [String: String] = [:]
if let scanner {
properties[Key.scanner] = scanner.analyticsName
}
if let step {
properties[Key.step] = step
}
return WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupDismissed,
properties: properties)
}

static func barcodeScannerSetupRetryTapped(scanner: PointOfSaleBarcodeScannerType) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupRetryTapped,
properties: [Key.scanner: scanner.analyticsName])
}

static func barcodeScannerSetupScannerConnected(scanner: PointOfSaleBarcodeScannerType, step: String) -> WooAnalyticsEvent {
WooAnalyticsEvent(statName: .pointOfSaleBarcodeScannerSetupScannerConnected,
properties: [Key.scanner: scanner.analyticsName])
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ protocol PointOfSaleAggregateModelProtocol {
var couponsSearchController: PointOfSaleSearchingItemsControllerProtocol { get }

var cart: Cart { get }
func barcodeScanned(_ result: Result<String, Error>)
func barcodeScanned(_ result: Result<String, HIDBarcodeParserError>)
func addToCart(_ item: POSItem)
func remove(cartItem: CartItem)
func removeAllItemsFromCart(types: [CartItemType])
Expand Down Expand Up @@ -185,7 +185,7 @@ extension PointOfSaleAggregateModel {
// MARK: - Barcode Scanning
@available(iOS 17.0, *)
extension PointOfSaleAggregateModel {
func barcodeScanned(_ result: Result<String, Error>) {
func barcodeScanned(_ result: Result<String, HIDBarcodeParserError>) {
Task { @MainActor [weak self] in
guard let self else { return }
switch result {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ struct PointOfSaleBarcodeScannerSetup: View {
.onAppear {
ServiceLocator.analytics.track(.pointOfSaleBarcodeScannerSetupFlowShown)
}
.onDisappear {
flowManager.onDisappear()
}
}

// MARK: - Computed Properties
Expand Down
Loading