Skip to content

Commit 1bafc53

Browse files
committed
Updated milliseconds_since_order_sync_success
We track this property when the order is created or updated
1 parent 7a7492b commit 1bafc53

File tree

6 files changed

+35
-21
lines changed

6 files changed

+35
-21
lines changed

WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalytics.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ final class POSCollectOrderPaymentAnalytics: CollectOrderPaymentAnalyticsTrackin
55
var connectedReaderModel: String?
66

77
private var customerInteractionStarted: Double = 0
8-
private var orderCreated: Double = 0
8+
private var orderSync: Double = 0
99
private var cardReaderReady: Double = 0
1010
private var cardReaderTapped: Double = 0
1111
private var checkoutTapCount: Int = 0
@@ -24,8 +24,8 @@ final class POSCollectOrderPaymentAnalytics: CollectOrderPaymentAnalyticsTrackin
2424
// Property: milliseconds_since_customer_interaction_started
2525
let elapsedTimeSinceCustomerInteraction = calculateElapsedTimeInMilliseconds(since: customerInteractionStarted)
2626

27-
// Property: milliseconds_since_order_creation_success
28-
let elapsedTimeSinceOrderCreation = calculateElapsedTimeInMilliseconds(since: orderCreated)
27+
// Property: milliseconds_since_order_sync_success
28+
let elapsedTimeSinceOrderSync = calculateElapsedTimeInMilliseconds(since: orderSync)
2929

3030
// Property: milliseconds_since_reader_ready_to_collect_payment
3131
let elapsedTimeSinceCardReaderReady = calculateElapsedTimeInMilliseconds(since: cardReaderReady)
@@ -35,7 +35,7 @@ final class POSCollectOrderPaymentAnalytics: CollectOrderPaymentAnalyticsTrackin
3535

3636
analytics.track(event: .PointOfSale.cardPresentCollectPaymentSuccess(
3737
millisecondsSinceCustomerIteractionStarted: elapsedTimeSinceCustomerInteraction,
38-
millisecondsSinceOrderCreationSuccess: elapsedTimeSinceOrderCreation,
38+
millisecondsSinceOrderSyncSuccess: elapsedTimeSinceOrderSync,
3939
millisecondsSinceReaderReadyToCollect: elapsedTimeSinceCardReaderReady,
4040
millisecondsSinceCardTapped: elapsedTimeSinceCardTapped,
4141
checkoutTapCount: checkoutTapCount
@@ -69,15 +69,15 @@ final class POSCollectOrderPaymentAnalytics: CollectOrderPaymentAnalyticsTrackin
6969
customerInteractionStarted = Date().timeIntervalSince1970
7070
}
7171

72-
func trackOrderCreationSuccess() {
73-
orderCreated = trackCurrentTime()
72+
func trackOrderSyncSuccess() {
73+
orderSync = trackCurrentTime()
7474
}
7575

7676
func trackCardReaderReady() {
7777
cardReaderReady = trackCurrentTime()
7878

79-
// As a side effect of knowing when the reader is ready, we track the elapsed from order creation
80-
trackElapsedTimeFromOrderCreationToCardReady()
79+
// As a side effect of knowing when the reader is ready, we track the elapsed from order sync (created or updated)
80+
trackElapsedTimeFromOrderSyncToCardReady()
8181
}
8282

8383
// The Stripe SDK returns multiple `.processing` events, but we want to capture the first one in the stream only.
@@ -97,8 +97,8 @@ final class POSCollectOrderPaymentAnalytics: CollectOrderPaymentAnalyticsTrackin
9797
checkoutTapCount = 0
9898
}
9999

100-
private func trackElapsedTimeFromOrderCreationToCardReady() {
101-
let elapsedTime = cardReaderReady - orderCreated
100+
private func trackElapsedTimeFromOrderSyncToCardReady() {
101+
let elapsedTime = cardReaderReady - orderSync
102102
analytics.track(event: .PointOfSale.cardReaderReadyForCardPayment(waitingTime: elapsedTime))
103103
}
104104
}
@@ -119,7 +119,7 @@ private extension POSCollectOrderPaymentAnalytics {
119119
}
120120

121121
private func resetAllCountersOnInteractionStarted() {
122-
orderCreated = 0
122+
orderSync = 0
123123
cardReaderReady = 0
124124
cardReaderTapped = 0
125125
resetCheckoutTapCountTracker()
@@ -131,7 +131,7 @@ private extension POSCollectOrderPaymentAnalytics {
131131
// https://github.com/woocommerce/woocommerce-ios/issues/15149
132132
extension CollectOrderPaymentAnalytics {
133133
func trackCustomerInteractionStarted() { }
134-
func trackOrderCreationSuccess() { }
134+
func trackOrderSyncSuccess() { }
135135
func trackCardReaderReady() { }
136136
func trackCardReaderTapped() { }
137137
func trackCheckoutTapped() { }

WooCommerce/Classes/POS/Analytics/WooAnalyticsEvent+PointOfSale.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ extension WooAnalyticsEvent {
1313
static let itemType = "product_type"
1414
static let itemsInCart = "items_in_cart"
1515
static let millisecondsSinceCustomerInteractionStarted = "milliseconds_since_customer_interaction_started"
16-
static let millisecondsSinceOrderCreationSuccess = "milliseconds_since_order_creation_success"
16+
static let millisecondsSinceOrderSyncSuccess = "milliseconds_since_order_sync_success"
1717
static let millisecondsSinceReaderReadyToCollect = "milliseconds_since_reader_ready_to_collect_payment"
1818
static let millisecondsSinceCardTapped = "milliseconds_since_card_tapped"
1919
static let checkoutTapCount = "checkout_tap_count"
@@ -46,13 +46,13 @@ extension WooAnalyticsEvent {
4646
}
4747

4848
static func cardPresentCollectPaymentSuccess(millisecondsSinceCustomerIteractionStarted: Double,
49-
millisecondsSinceOrderCreationSuccess: Double,
49+
millisecondsSinceOrderSyncSuccess: Double,
5050
millisecondsSinceReaderReadyToCollect: Double,
5151
millisecondsSinceCardTapped: Double,
5252
checkoutTapCount: Int) -> WooAnalyticsEvent {
5353
WooAnalyticsEvent(statName: .collectPaymentSuccess, properties: [
5454
Key.millisecondsSinceCustomerInteractionStarted: "\(millisecondsSinceCustomerIteractionStarted)",
55-
Key.millisecondsSinceOrderCreationSuccess: "\(millisecondsSinceOrderCreationSuccess)",
55+
Key.millisecondsSinceOrderSyncSuccess: "\(millisecondsSinceOrderSyncSuccess)",
5656
Key.millisecondsSinceReaderReadyToCollect: "\(millisecondsSinceReaderReadyToCollect)",
5757
Key.millisecondsSinceCardTapped: "\(millisecondsSinceCardTapped)",
5858
Key.checkoutTapCount: "\(checkoutTapCount)"

WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,22 @@ private extension PointOfSaleAggregateModel {
165165
collectOrderPaymentAnalyticsTracker.trackCustomerInteractionStarted()
166166
}
167167
}
168+
169+
// Tracks when the order is created or updated successfully
170+
// pdfdoF-6hn#comment-7625-p2
171+
func trackOrderSyncState(_ result: Result<SyncOrderState, Error>) {
172+
switch result {
173+
case .success(let syncState):
174+
switch syncState {
175+
case .newOrder, .orderUpdated:
176+
collectOrderPaymentAnalyticsTracker.trackOrderSyncSuccess()
177+
default:
178+
break
179+
}
180+
case .failure:
181+
break
182+
}
183+
}
168184
}
169185

170186
// MARK: - Card payments
@@ -453,9 +469,7 @@ extension PointOfSaleAggregateModel {
453469
let syncOrderResult = await orderController.syncOrder(for: cart, retryHandler: { [weak self] in
454470
await self?.checkOut()
455471
})
456-
if case .success(.newOrder) = syncOrderResult {
457-
collectOrderPaymentAnalyticsTracker.trackOrderCreationSuccess()
458-
}
472+
trackOrderSyncState(syncOrderResult)
459473
await startPaymentWhenCardReaderConnected()
460474
}
461475
}

WooCommerce/Classes/ViewRelated/Orders/Collect Payments/CollectOrderPaymentAnalytics.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ protocol CollectOrderPaymentAnalyticsTracking {
2626
func trackReceiptPrintFailed(error: Error)
2727

2828
func trackCustomerInteractionStarted()
29-
func trackOrderCreationSuccess()
29+
func trackOrderSyncSuccess()
3030
func trackCardReaderReady()
3131
func trackCardReaderTapped()
3232
func trackCheckoutTapped()

WooCommerce/WooCommerceTests/Mocks/MockCollectOrderPaymentAnalyticsTracker.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ final class MockCollectOrderPaymentAnalyticsTracker: CollectOrderPaymentAnalytic
5858
// no-op
5959
}
6060

61-
func trackOrderCreationSuccess() {
61+
func trackOrderSyncSuccess() {
6262
// no-op
6363
}
6464

WooCommerce/WooCommerceTests/POS/Analytics/POSCollectOrderPaymentAnalyticsTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ struct POSCollectOrderPaymentAnalyticsTests {
1717
let capturedPaymentData = CardPresentCapturedPaymentData(paymentMethod: .cardPresent(details: .fake()), receiptParameters: nil)
1818
let expectedEvent = "card_present_collect_payment_success"
1919
let expectedProperties = [
20-
"milliseconds_since_order_creation_success",
20+
"milliseconds_since_order_sync_success",
2121
"milliseconds_since_reader_ready_to_collect_payment",
2222
"milliseconds_since_card_tapped",
2323
"milliseconds_since_customer_interaction_started",

0 commit comments

Comments
 (0)