Skip to content

Commit 8a7bab7

Browse files
authored
Merge pull request #8351 from woocommerce/issue/8289-show-processing-directly-after-collect-payment
[Mobile Payments] Show Processing alert directly after collect payment completes
2 parents a19201e + cb38555 commit 8a7bab7

File tree

6 files changed

+14
-8
lines changed

6 files changed

+14
-8
lines changed

Hardware/Hardware/CardReader/CardReaderEvent.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public enum CardReaderEvent: Equatable {
1818
/// A card was removed after client-side payment capture.
1919
case cardRemovedAfterClientSidePaymentCapture
2020

21+
/// Card details were collected, and can be used to process a payment.
22+
case cardDetailsCollected
23+
2124
/// Low battery warning.
2225
case lowBattery
2326

Hardware/Hardware/CardReader/StripeCardReader/StripeCardReaderService.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@ extension StripeCardReaderService: CardReaderService {
228228
return promise(.success(()))
229229
}
230230

231+
// When this is used for a new payment, there is a new subscription to readerEvents, which won't rely the
232+
// old `.removeCard` message. If there is a card inserted, we manually send a display message prompting to
233+
// remove the card, and wait for that before continuing.
234+
self.sendReaderEvent(CardReaderEvent.make(displayMessage: .removeCard))
235+
231236
self.timerCancellable = Timer.publish(every: 1, tolerance: 0.1, on: .main, in: .default)
232237
.autoconnect()
233238
.receive(on: DispatchQueue.main)
@@ -260,12 +265,6 @@ extension StripeCardReaderService: CardReaderService {
260265
// steps produce a Future.
261266

262267
// If a card was left from a previous payment attempt, we want that removed before we initiate a new payment.
263-
// However, a new payment probably means a new subscription to readerEvents, which won't rely the old `.removeCard`
264-
// message. If there is a card inserted, we manually send a display message prompting to remove the card,
265-
// and wait for that before continuing.
266-
if isChipCardInserted {
267-
sendReaderEvent(CardReaderEvent.make(displayMessage: .removeCard))
268-
}
269268
return waitForInsertedCardToBeRemoved()
270269
.flatMap {
271270
self.createPaymentIntent(parameters)
@@ -524,6 +523,7 @@ private extension StripeCardReaderService {
524523
}
525524

526525
if let intent = intent {
526+
self?.sendReaderEvent(.cardDetailsCollected)
527527
promise(.success(intent))
528528
}
529529
}

RELEASE-NOTES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
11.6
44
-----
55
- [***] We added a new Analytics Hub inside the My Store area of the app. Simply click on the See More button under the store stats to check more detailed information on Revenue, Orders and Products. [https://github.com/woocommerce/woocommerce-ios/pull/8356]
6+
- [*] In-Person Payments: fixed timing issues in payments flow, which caused "Remove card" to be shown for too long [https://github.com/woocommerce/woocommerce-ios/pull/8351]
67

78
11.5
89
-----

WooCommerce/Classes/ViewModels/CardPresentPayments/CardPresentRefundOrchestrator.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ final class CardPresentRefundOrchestrator {
4444
onWaitingForInput(inputMethods)
4545
case .displayMessage(let message):
4646
onDisplayMessage(message)
47+
case .cardDetailsCollected:
48+
onProcessingMessage()
4749
default:
4850
break
4951
}

WooCommerce/Classes/ViewModels/CardPresentPayments/LegacyPaymentCaptureOrchestrator.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ final class LegacyPaymentCaptureOrchestrator {
6565
onWaitingForInput(inputMethods)
6666
case .displayMessage(let message):
6767
onDisplayMessage(message)
68-
case .cardRemovedAfterClientSidePaymentCapture:
68+
case .cardDetailsCollected, .cardRemovedAfterClientSidePaymentCapture:
6969
onProcessingMessage()
7070
default:
7171
break

WooCommerce/Classes/ViewModels/CardPresentPayments/PaymentCaptureOrchestrator.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ final class PaymentCaptureOrchestrator {
7777
onWaitingForInput(inputMethods)
7878
case .displayMessage(let message):
7979
onDisplayMessage(message)
80-
case .cardRemovedAfterClientSidePaymentCapture:
80+
case .cardDetailsCollected, .cardRemovedAfterClientSidePaymentCapture:
8181
onProcessingMessage()
8282
default:
8383
break

0 commit comments

Comments
 (0)