Skip to content

Commit e2c47bb

Browse files
committed
8290 End discovery when user cancels Apple TOS link
1 parent 009a740 commit e2c47bb

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

Hardware/Hardware/CardReader/StripeCardReader/StripeCardReaderService.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,10 @@ extension StripeCardReaderService: CardReaderService {
470470
.softwareUpdate(underlyingError: underlyingError, batteryLevel: nil) :
471471
.connection(underlyingError: underlyingError)
472472
promise(.failure(serviceError))
473+
474+
if case .appleBuiltInReaderTOSAcceptanceCanceled = underlyingError {
475+
self.discoveryCancellable?.cancel({ _ in })
476+
}
473477
}
474478

475479
if let reader = reader {

WooCommerce/Classes/ViewRelated/CardPresentPayments/BuiltInCardReaderConnectionController.swift

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -375,13 +375,19 @@ private extension BuiltInCardReaderConnectionController {
375375
self.returnSuccess(result: .connected(reader))
376376
}
377377
case .failure(let error):
378-
ServiceLocator.analytics.track(
379-
event: WooAnalyticsEvent.InPersonPayments.cardReaderConnectionFailed(forGatewayID: self.gatewayID,
380-
error: error,
381-
countryCode: self.configuration.countryCode,
382-
cardReaderModel: candidateReader.readerType.model)
383-
)
384-
self.state = .connectingFailed(error)
378+
// The TOS acceptance flow happens during connection, not discovery, and cancelations from Apple's
379+
// screen are returned as failures here.
380+
if case .connection(.appleBuiltInReaderTOSAcceptanceCanceled) = error as? CardReaderServiceError {
381+
return self.state = .cancel
382+
} else {
383+
ServiceLocator.analytics.track(
384+
event: WooAnalyticsEvent.InPersonPayments.cardReaderConnectionFailed(forGatewayID: self.gatewayID,
385+
error: error,
386+
countryCode: self.configuration.countryCode,
387+
cardReaderModel: candidateReader.readerType.model)
388+
)
389+
self.state = .connectingFailed(error)
390+
}
385391
}
386392
}
387393
stores.dispatch(action)

0 commit comments

Comments
 (0)