Skip to content

Commit 413a152

Browse files
committed
Remove CollectingPayment UI state and consolidate into ProcessingPayment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent a07a792 commit 413a152

File tree

11 files changed

+81
-157
lines changed

11 files changed

+81
-157
lines changed

WooCommerce/src/androidTest/kotlin/com/woocommerce/android/di/MockCardReaderManagerModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class MockCardReaderManagerModule {
8585
override suspend fun disconnectReader(): Boolean = true
8686

8787
override suspend fun collectPayment(paymentInfo: PaymentInfo): Flow<CardPaymentStatus> =
88-
flowOf(CardPaymentStatus.CollectingPayment)
88+
flowOf(CardPaymentStatus.ProcessingPayment)
8989

9090
override suspend fun refundInteracPayment(
9191
refundParams: RefundParams,

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentStateToViewStateMapper.kt

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.woocommerce.android.model.UiString
55
import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderType
66
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState
77
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderInteracRefundState
8-
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.CollectingPayment
98
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.LoadingData
109
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.PaymentCapturing
1110
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.PaymentFailed
@@ -42,21 +41,6 @@ class CardReaderPaymentStateToViewStateMapper @Inject constructor(
4241
is CardReaderInteracRefundState.ProcessingInteracRefund -> {
4342
ViewState.ProcessingRefundState(paymentState.amountWithCurrencyLabel)
4443
}
45-
is CollectingPayment.BuiltInReaderCollectPaymentState -> {
46-
ViewState.BuiltInReaderCollectPaymentState(
47-
amountWithCurrencyLabel = paymentState.amountWithCurrencyLabel,
48-
hintLabel = paymentState.cardReaderHint
49-
?: R.string.card_reader_payment_collect_payment_built_in_hint
50-
)
51-
}
52-
is CollectingPayment.ExternalReaderCollectPaymentState -> {
53-
ViewState.ExternalReaderCollectPaymentState(
54-
amountWithCurrencyLabel = paymentState.amountWithCurrencyLabel,
55-
hintLabel = paymentState.cardReaderHint
56-
?: R.string.card_reader_payment_collect_payment_hint,
57-
onSecondaryActionClicked = paymentState.onCancel
58-
)
59-
}
6044
is LoadingData -> ViewState.LoadingDataState(paymentState.onCancel)
6145
is PaymentCapturing.BuiltInReaderPaymentCapturing -> {
6246
ViewState.BuiltInReaderCapturingPaymentState(

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/controller/CardReaderPaymentController.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import com.woocommerce.android.cardreader.payments.CardPaymentStatus.AdditionalI
2929
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.AdditionalInfoType.TRY_ANOTHER_CARD
3030
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.AdditionalInfoType.TRY_ANOTHER_READ_METHOD
3131
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.CapturingPayment
32-
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.CollectingPayment
3332
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.InitializingPayment
3433
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.PaymentCompleted
3534
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.PaymentFailed
@@ -318,14 +317,6 @@ class CardReaderPaymentController(
318317
CardReaderPaymentState.LoadingData(::onCancelPaymentFlow)
319318
}
320319

321-
CollectingPayment -> {
322-
_paymentState.value = paymentStateProvider.provideCollectingPaymentState(
323-
cardReaderType,
324-
amountLabel,
325-
::onCancelPaymentFlow
326-
)
327-
}
328-
329320
ProcessingPayment -> {
330321
_paymentState.value = paymentStateProvider.provideProcessingPaymentState(
331322
cardReaderType,
@@ -643,12 +634,12 @@ class CardReaderPaymentController(
643634
)
644635
}
645636

646-
is CardReaderPaymentState.CollectingPayment.BuiltInReaderCollectPaymentState ->
637+
is CardReaderPaymentState.ProcessingPayment.BuiltInReaderProcessingPayment ->
647638
_paymentState.value = state.copy(
648639
cardReaderHint = cardReaderHint.toHintLabel(false)
649640
)
650641

651-
is CardReaderPaymentState.CollectingPayment.ExternalReaderCollectPaymentState ->
642+
is CardReaderPaymentState.ProcessingPayment.ExternalReaderProcessingPayment ->
652643
_paymentState.value = state.copy(
653644
cardReaderHint = cardReaderHint.toHintLabel(false)
654645
)

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/controller/CardReaderPaymentOrRefundState.kt

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,20 @@ sealed class CardReaderPaymentOrRefundState {
1010

1111
data object ReFetchingOrder : CardReaderPaymentState()
1212

13-
sealed class CollectingPayment(
13+
sealed class ProcessingPayment(
1414
open val amountWithCurrencyLabel: String,
1515
@StringRes open val cardReaderHint: Int? = null,
1616
) : CardReaderPaymentState() {
17-
data class BuiltInReaderCollectPaymentState(
18-
override val amountWithCurrencyLabel: String,
19-
override val cardReaderHint: Int? = null,
20-
) : CollectingPayment(amountWithCurrencyLabel, cardReaderHint)
21-
22-
data class ExternalReaderCollectPaymentState(
17+
data class BuiltInReaderProcessingPayment(
2318
override val amountWithCurrencyLabel: String,
24-
override val cardReaderHint: Int? = null,
25-
val onCancel: (() -> Unit)
26-
) : CollectingPayment(amountWithCurrencyLabel, cardReaderHint)
27-
}
28-
29-
sealed class ProcessingPayment(
30-
open val amountWithCurrencyLabel: String,
31-
) : CardReaderPaymentState() {
32-
data class BuiltInReaderProcessingPayment(override val amountWithCurrencyLabel: String) :
33-
ProcessingPayment(amountWithCurrencyLabel)
19+
@StringRes override val cardReaderHint: Int? = null,
20+
) : ProcessingPayment(amountWithCurrencyLabel, cardReaderHint)
3421

3522
data class ExternalReaderProcessingPayment(
3623
override val amountWithCurrencyLabel: String,
37-
val onCancel: () -> Unit
38-
) : ProcessingPayment(amountWithCurrencyLabel)
24+
val onCancel: () -> Unit,
25+
@StringRes override val cardReaderHint: Int? = null,
26+
) : ProcessingPayment(amountWithCurrencyLabel, cardReaderHint)
3927
}
4028

4129
data class PrintingReceipt(val amountWithCurrencyLabel: String) : CardReaderPaymentState()

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/controller/CardReaderPaymentStateProvider.kt

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderType
44
import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderType.BUILT_IN
55
import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderType.EXTERNAL
66
import com.woocommerce.android.ui.payments.cardreader.payment.PaymentFlowError
7-
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.CollectingPayment
87
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.PaymentCapturing
98
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.PaymentFailed.BuiltInReaderFailedPayment
109
import com.woocommerce.android.ui.payments.cardreader.payment.controller.CardReaderPaymentOrRefundState.CardReaderPaymentState.PaymentFailed.ExternalReaderFailedPayment
@@ -55,21 +54,6 @@ class CardReaderPaymentStateProvider @Inject constructor() {
5554
)
5655
}
5756

58-
fun provideCollectingPaymentState(
59-
cardReaderType: CardReaderType,
60-
amountWithCurrencyLabel: String,
61-
onCancel: () -> Unit
62-
) = when (cardReaderType) {
63-
BUILT_IN -> CollectingPayment.BuiltInReaderCollectPaymentState(
64-
amountWithCurrencyLabel = amountWithCurrencyLabel
65-
)
66-
67-
EXTERNAL -> CollectingPayment.ExternalReaderCollectPaymentState(
68-
amountWithCurrencyLabel = amountWithCurrencyLabel,
69-
onCancel = onCancel,
70-
)
71-
}
72-
7357
fun provideProcessingPaymentState(
7458
cardReaderType: CardReaderType,
7559
amountLabel: String,

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/controller/CardReaderTrackCanceledFlowAction.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class CardReaderTrackCanceledFlowAction @Inject constructor(
1212
operator fun invoke(state: CardReaderPaymentOrRefundState) = when (state) {
1313
is CardReaderPaymentState -> {
1414
val nameForTracking = when (state) {
15-
is CardReaderPaymentState.CollectingPayment -> "Collecting"
1615
is CardReaderPaymentState.PaymentCapturing -> "Capturing"
1716
is CardReaderPaymentState.ProcessingPayment -> "Processing"
1817
is CardReaderPaymentState.LoadingData -> "Loading"

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/totals/WooPosTotalsAnalyticsTracker.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,11 @@ class WooPosTotalsAnalyticsTracker @Inject constructor(
2222
suspend fun trackPaymentStates(paymentState: StateFlow<CardReaderPaymentOrRefundState>?) {
2323
paymentState?.distinctUntilChanged { old, new -> old::class == new::class }?.collect {
2424
when (it) {
25-
is CardReaderPaymentState.CollectingPayment -> {
25+
is CardReaderPaymentState.ProcessingPayment -> {
2626
analyticsData.readerReadyForPaymentTimestamp = System.currentTimeMillis()
2727
trackReaderReadyForPayment()
2828
}
2929

30-
is CardReaderPaymentState.ProcessingPayment -> {
31-
analyticsData.cardTappedTimestamp = System.currentTimeMillis()
32-
}
33-
3430
is CardReaderPaymentOrRefundState.CardReaderInteracRefundState.CollectingInteracRefund,
3531
is CardReaderPaymentOrRefundState.CardReaderInteracRefundState.InteracRefundFailure.Cancelable,
3632
is CardReaderPaymentOrRefundState.CardReaderInteracRefundState.InteracRefundFailure.NonCancelable,

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/totals/WooPosTotalsViewModel.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -380,13 +380,12 @@ class WooPosTotalsViewModel @Inject constructor(
380380
viewModelScope.launch {
381381
cardReaderPaymentController?.paymentState?.collect { paymentState ->
382382
when (paymentState) {
383-
is CardReaderPaymentState.CollectingPayment -> handleCollectingPaymentState(paymentState)
383+
is CardReaderPaymentState.ProcessingPayment -> handleProcessingPaymentState(paymentState)
384384

385385
is CardReaderPaymentState.LoadingData -> handleReaderLoadingPaymentState()
386386

387-
is CardReaderPaymentState.PaymentCapturing,
388-
is CardReaderPaymentState.ProcessingPayment -> {
389-
handleProcessingOrCapturingPaymentState()
387+
is CardReaderPaymentState.PaymentCapturing -> {
388+
handleCapturingPaymentState()
390389
}
391390

392391
is CardReaderPaymentState.PaymentSuccessful -> {
@@ -412,12 +411,10 @@ class WooPosTotalsViewModel @Inject constructor(
412411
viewModelScope.launch { totalsAnalyticsTracker.trackPaymentStates(cardReaderPaymentController?.paymentState) }
413412
}
414413

415-
private suspend fun handleProcessingOrCapturingPaymentState() {
414+
private suspend fun handleCapturingPaymentState() {
416415
val state = uiState.value
417416
if (state is WooPosTotalsViewState.Checkout) {
418417
uiState.value = state.copy(totals = Totals.Hidden)
419-
// allow the UI to show "shrinking" exit animation of totals grid before showing
420-
// the "payment in progress" state.
421418
@Suppress("MagicNumber")
422419
delay(384)
423420
}
@@ -428,7 +425,7 @@ class WooPosTotalsViewModel @Inject constructor(
428425
)
429426
}
430427

431-
private suspend fun handleCollectingPaymentState(paymentState: CardReaderPaymentState.CollectingPayment) {
428+
private suspend fun handleProcessingPaymentState(paymentState: CardReaderPaymentState.ProcessingPayment) {
432429
val totalsState = uiState.value
433430
if (totalsState is WooPosTotalsViewState.Checkout) {
434431
uiState.value = totalsState.copy(

WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/cardreader/CardReaderPaymentViewModelTest.kt

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import com.woocommerce.android.cardreader.payments.CardPaymentStatus.CardPayment
2828
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.CardPaymentStatusErrorType.NoNetwork
2929
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.CardPaymentStatusErrorType.ReaderNotConnected
3030
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.CardPaymentStatusErrorType.Server
31-
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.CollectingPayment
3231
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.InitializingPayment
3332
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.PaymentCompleted
3433
import com.woocommerce.android.cardreader.payments.CardPaymentStatus.PaymentFailed
@@ -262,7 +261,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
262261
}
263262

264263
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
265-
flow { emit(CollectingPayment) }
264+
flow { emit(ProcessingPayment) }
266265
}
267266

268267
viewModel.start()
@@ -282,7 +281,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
282281
}
283282

284283
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
285-
flow { emit(CollectingPayment) }
284+
flow { emit(ProcessingPayment) }
286285
}
287286

288287
viewModel.start()
@@ -301,7 +300,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
301300
}
302301

303302
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
304-
flow { emit(CollectingPayment) }
303+
flow { emit(ProcessingPayment) }
305304
}
306305

307306
viewModel.start()
@@ -320,7 +319,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
320319
}
321320

322321
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
323-
flow { emit(CollectingPayment) }
322+
flow { emit(ProcessingPayment) }
324323
}
325324

326325
viewModel.start()
@@ -340,7 +339,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
340339
}
341340

342341
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
343-
flow { emit(CollectingPayment) }
342+
flow { emit(ProcessingPayment) }
344343
}
345344

346345
viewModel.start()
@@ -361,7 +360,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
361360
}
362361

363362
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
364-
flow { emit(CollectingPayment) }
363+
flow { emit(ProcessingPayment) }
365364
}
366365

367366
viewModel.start()
@@ -382,7 +381,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
382381
}
383382

384383
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
385-
flow { emit(CollectingPayment) }
384+
flow { emit(ProcessingPayment) }
386385
}
387386

388387
viewModel.start()
@@ -403,7 +402,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
403402
}
404403

405404
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
406-
flow { emit(CollectingPayment) }
405+
flow { emit(ProcessingPayment) }
407406
}
408407

409408
viewModel.start()
@@ -424,7 +423,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
424423
}
425424

426425
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
427-
flow { emit(CollectingPayment) }
426+
flow { emit(ProcessingPayment) }
428427
}
429428

430429
viewModel.start()
@@ -532,7 +531,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
532531
fun `when collecting payment, then ui updated to collecting payment state`() =
533532
testBlocking {
534533
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
535-
flow { emit(CollectingPayment) }
534+
flow { emit(ProcessingPayment) }
536535
}
537536

538537
viewModel.start()
@@ -544,7 +543,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
544543
fun `given built in reader,when collecting payment, then ui updated to collecting payment state`() =
545544
testBlocking {
546545
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
547-
flow { emit(CollectingPayment) }
546+
flow { emit(ProcessingPayment) }
548547
}
549548
initViewModel(BUILT_IN)
550549

@@ -1511,7 +1510,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
15111510
fun `when collecting payment, then progress and cancel button is visible`() =
15121511
testBlocking {
15131512
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
1514-
flow { emit(CollectingPayment) }
1513+
flow { emit(ProcessingPayment) }
15151514
}
15161515

15171516
viewModel.start()
@@ -1527,7 +1526,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() {
15271526
fun `when collecting payment, then correct labels and illustration is shown`() =
15281527
testBlocking {
15291528
whenever(cardReaderManager.collectPayment(any())).thenAnswer {
1530-
flow { emit(CollectingPayment) }
1529+
flow { emit(ProcessingPayment) }
15311530
}
15321531

15331532
viewModel.start()

0 commit comments

Comments
 (0)