diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentDialogFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentDialogFragment.kt index e91bcbb8bf2..a317c226d28 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentDialogFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentDialogFragment.kt @@ -31,8 +31,6 @@ import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.BuiltInR import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.BuiltInReaderPaymentSuccessfulState import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.ExternalReaderPaymentSuccessfulReceiptSentAutomaticallyState import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.ExternalReaderPaymentSuccessfulState -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.PrintReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.SendReceipt import com.woocommerce.android.ui.payments.refunds.RefundSummaryFragment.Companion.KEY_INTERAC_SUCCESS import com.woocommerce.android.util.ActivityUtils import com.woocommerce.android.util.PrintHtmlHelper diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModel.kt index 0f09f739469..87e76828d0f 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModel.kt @@ -67,8 +67,7 @@ import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.Processi import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.ReFetchingOrderState import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.RefundLoadingDataState import com.woocommerce.android.ui.payments.cardreader.payment.ViewState.RefundSuccessfulState -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.PrintReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.SendReceipt +import com.woocommerce.android.ui.payments.receipt.PaymentReceiptHelper import com.woocommerce.android.ui.payments.tracking.CardReaderTrackingInfoKeeper import com.woocommerce.android.ui.payments.tracking.PaymentsFlowTracker import com.woocommerce.android.util.CoroutineDispatchers @@ -115,7 +114,7 @@ class CardReaderPaymentViewModel private val cardReaderTrackingInfoKeeper: CardReaderTrackingInfoKeeper, private val cardReaderPaymentReaderTypeStateProvider: CardReaderPaymentReaderTypeStateProvider, private val cardReaderPaymentOrderHelper: CardReaderPaymentOrderHelper, - private val cardReaderPaymentReceiptHelper: CardReaderPaymentReceiptHelper, + private val paymentReceiptHelper: PaymentReceiptHelper, private val cardReaderOnboardingChecker: CardReaderOnboardingChecker, private val cardReaderConfigProvider: CardReaderCountryConfigProvider, ) : ScopedViewModel(savedState) { @@ -302,7 +301,7 @@ class CardReaderPaymentViewModel currency = order.currency, orderKey = order.orderKey, customerEmail = customerEmail.ifEmpty { null }, - isPluginCanSendReceipt = cardReaderPaymentReceiptHelper.isPluginCanSendReceipt(site), + isPluginCanSendReceipt = paymentReceiptHelper.isPluginCanSendReceipt(site), customerName = "${order.billingAddress.firstName} ${order.billingAddress.lastName}".ifBlank { null }, storeName = selectedSite.get().name.ifEmpty { null }, siteUrl = selectedSite.get().url.ifEmpty { null }, @@ -457,7 +456,7 @@ class CardReaderPaymentViewModel paymentStatus: PaymentCompleted, orderId: Long, ) { - cardReaderPaymentReceiptHelper.storeReceiptUrl(orderId, paymentStatus.receiptUrl) + paymentReceiptHelper.storeReceiptUrl(orderId, paymentStatus.receiptUrl) appPrefs.setCardReaderSuccessfulPaymentTime() triggerEvent(PlayChaChing) showPaymentSuccessfulState() @@ -606,7 +605,7 @@ class CardReaderPaymentViewModel launch { val order = requireNotNull(orderRepository.getOrderById(orderId)) { "Order URL not available." } val amountLabel = cardReaderPaymentOrderHelper.getAmountLabel(order) - val receiptUrl = cardReaderPaymentReceiptHelper.getReceiptUrl(order.id) + val receiptUrl = paymentReceiptHelper.getReceiptUrl(order.id) val onPrintReceiptClicked = { onPrintReceiptClicked( amountLabel, @@ -719,7 +718,7 @@ class CardReaderPaymentViewModel ?: throw IllegalStateException("Order URL not available.") triggerEvent( PrintReceipt( - cardReaderPaymentReceiptHelper.getReceiptUrl(order.id), + paymentReceiptHelper.getReceiptUrl(order.id), cardReaderPaymentOrderHelper.getReceiptDocumentName(order) ) ) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModelEvent.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModelEvent.kt index d7d95a7ae46..5a44a75ebb3 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModelEvent.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModelEvent.kt @@ -1,6 +1,7 @@ package com.woocommerce.android.ui.payments.cardreader.payment import androidx.annotation.StringRes +import com.woocommerce.android.model.UiString import com.woocommerce.android.viewmodel.MultiLiveEvent.Event class ShowSnackbarInDialog(@StringRes val message: Int) : Event() @@ -14,3 +15,7 @@ object ContactSupport : Event() object EnableNfc : Event() data class PurchaseCardReader(val url: String) : Event() + +data class PrintReceipt(val receiptUrl: String, val documentName: String) : Event() + +data class SendReceipt(val content: UiString, val subject: UiString, val address: String) : Event() diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptEvent.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptEvent.kt deleted file mode 100644 index b0a546966d4..00000000000 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptEvent.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.woocommerce.android.ui.payments.cardreader.receipt - -import com.woocommerce.android.model.UiString -import com.woocommerce.android.viewmodel.MultiLiveEvent.Event - -sealed class ReceiptEvent : Event() { - data class PrintReceipt(val receiptUrl: String, val documentName: String) : ReceiptEvent() - data class SendReceipt(val content: UiString, val subject: UiString, val address: String) : ReceiptEvent() -} diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentReceiptHelper.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/PaymentReceiptHelper.kt similarity index 93% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentReceiptHelper.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/PaymentReceiptHelper.kt index 2106c7b57cf..4ce9c100406 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentReceiptHelper.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/PaymentReceiptHelper.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.payments.cardreader.payment +package com.woocommerce.android.ui.payments.receipt import com.woocommerce.android.AppPrefsWrapper import com.woocommerce.android.extensions.semverCompareTo @@ -8,7 +8,7 @@ import com.woocommerce.android.ui.payments.cardreader.onboarding.WCPAY_RECEIPTS_ import org.wordpress.android.fluxc.model.SiteModel import javax.inject.Inject -class CardReaderPaymentReceiptHelper @Inject constructor( +class PaymentReceiptHelper @Inject constructor( private val selectedSite: SelectedSite, private val appPrefsWrapper: AppPrefsWrapper ) { diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptPreviewFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewFragment.kt similarity index 92% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptPreviewFragment.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewFragment.kt index 5b23fa8ac44..9523b67ec65 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptPreviewFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewFragment.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.payments.cardreader.receipt +package com.woocommerce.android.ui.payments.receipt.preview import android.os.Bundle import android.view.Menu @@ -14,9 +14,6 @@ import com.woocommerce.android.analytics.AnalyticsTracker import com.woocommerce.android.databinding.FragmentReceiptPreviewBinding import com.woocommerce.android.ui.base.BaseFragment import com.woocommerce.android.ui.base.UIMessageResolver -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.PrintReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.SendReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel.ReceiptPreviewEvent.LoadUrl import com.woocommerce.android.util.ActivityUtils import com.woocommerce.android.util.PrintHtmlHelper import com.woocommerce.android.util.UiHelpers diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptPreviewViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModel.kt similarity index 82% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptPreviewViewModel.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModel.kt index f75d69ce284..e609731afa8 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/receipt/ReceiptPreviewViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModel.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.payments.cardreader.receipt +package com.woocommerce.android.ui.payments.receipt.preview import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData @@ -14,16 +14,12 @@ import com.woocommerce.android.analytics.AnalyticsTrackerWrapper import com.woocommerce.android.model.UiString.UiStringRes import com.woocommerce.android.model.UiString.UiStringText import com.woocommerce.android.tools.SelectedSite -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.PrintReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.SendReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel.ReceiptPreviewEvent.LoadUrl -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel.ReceiptPreviewViewState.Content -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel.ReceiptPreviewViewState.Loading +import com.woocommerce.android.ui.payments.receipt.preview.ReceiptPreviewViewModel.ReceiptPreviewViewState.Content +import com.woocommerce.android.ui.payments.receipt.preview.ReceiptPreviewViewModel.ReceiptPreviewViewState.Loading import com.woocommerce.android.util.PrintHtmlHelper.PrintJobResult import com.woocommerce.android.util.PrintHtmlHelper.PrintJobResult.CANCELLED import com.woocommerce.android.util.PrintHtmlHelper.PrintJobResult.FAILED import com.woocommerce.android.util.PrintHtmlHelper.PrintJobResult.STARTED -import com.woocommerce.android.viewmodel.MultiLiveEvent.Event import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ShowSnackbar import com.woocommerce.android.viewmodel.ScopedViewModel import com.woocommerce.android.viewmodel.navArgs @@ -97,8 +93,4 @@ class ReceiptPreviewViewModel object Loading : ReceiptPreviewViewState(isProgressVisible = true) object Content : ReceiptPreviewViewState(isContentVisible = true) } - - sealed class ReceiptPreviewEvent : Event() { - data class LoadUrl(val url: String) : ReceiptPreviewEvent() - } } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModelEvent.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModelEvent.kt new file mode 100644 index 00000000000..5edf89f0559 --- /dev/null +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModelEvent.kt @@ -0,0 +1,10 @@ +package com.woocommerce.android.ui.payments.receipt.preview + +import com.woocommerce.android.model.UiString +import com.woocommerce.android.viewmodel.MultiLiveEvent + +data class LoadUrl(val url: String) : MultiLiveEvent.Event() + +data class PrintReceipt(val receiptUrl: String, val documentName: String) : MultiLiveEvent.Event() + +data class SendReceipt(val content: UiString, val subject: UiString, val address: String) : MultiLiveEvent.Event() diff --git a/WooCommerce/src/main/res/navigation/nav_graph_orders.xml b/WooCommerce/src/main/res/navigation/nav_graph_orders.xml index 894bd9aa164..5e9d5f0157e 100644 --- a/WooCommerce/src/main/res/navigation/nav_graph_orders.xml +++ b/WooCommerce/src/main/res/navigation/nav_graph_orders.xml @@ -488,7 +488,7 @@ {} } - whenever(cardReaderPaymentReceiptHelper.isPluginCanSendReceipt(siteModel)).thenReturn(true) - whenever(cardReaderPaymentReceiptHelper.getReceiptUrl(ORDER_ID)).thenReturn("test url") + whenever(paymentReceiptHelper.isPluginCanSendReceipt(siteModel)).thenReturn(true) + whenever(paymentReceiptHelper.getReceiptUrl(ORDER_ID)).thenReturn("test url") whenever(cardReaderPaymentOrderHelper.getPaymentDescription(mockedOrder)).thenReturn("test description") whenever(cardReaderPaymentOrderHelper.getAmountLabel(mockedOrder)) .thenReturn("$DUMMY_CURRENCY_SYMBOL$DUMMY_TOTAL") @@ -1916,7 +1916,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() { viewModel.start() - verify(cardReaderPaymentReceiptHelper).storeReceiptUrl(eq(ORDER_ID), eq(receiptUrl)) + verify(paymentReceiptHelper).storeReceiptUrl(eq(ORDER_ID), eq(receiptUrl)) } @Test @@ -3054,7 +3054,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() { fun `given plugin can not be send, when flow started, then wc pay can send receipt is false`() = testBlocking { // Given - whenever(cardReaderPaymentReceiptHelper.isPluginCanSendReceipt(siteModel)).thenReturn(false) + whenever(paymentReceiptHelper.isPluginCanSendReceipt(siteModel)).thenReturn(false) val captor = argumentCaptor() // When @@ -3069,7 +3069,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() { fun `given plugin can be send, when flow started, then wc pay can send receipt is true`() = testBlocking { // Given - whenever(cardReaderPaymentReceiptHelper.isPluginCanSendReceipt(siteModel)).thenReturn(true) + whenever(paymentReceiptHelper.isPluginCanSendReceipt(siteModel)).thenReturn(true) val captor = argumentCaptor() // When @@ -4328,7 +4328,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() { cardReaderTrackingInfoKeeper = cardReaderTrackingInfoKeeper, cardReaderPaymentReaderTypeStateProvider = cardReaderPaymentReaderTypeStateProvider, cardReaderPaymentOrderHelper = cardReaderPaymentOrderHelper, - cardReaderPaymentReceiptHelper = cardReaderPaymentReceiptHelper, + paymentReceiptHelper = paymentReceiptHelper, cardReaderOnboardingChecker = cardReaderOnboardingChecker, cardReaderConfigProvider = cardReaderConfigProvider, ) @@ -4360,7 +4360,7 @@ class CardReaderPaymentViewModelTest : BaseUnitTest() { cardReaderTrackingInfoKeeper = cardReaderTrackingInfoKeeper, cardReaderPaymentReaderTypeStateProvider = cardReaderPaymentReaderTypeStateProvider, cardReaderPaymentOrderHelper = cardReaderPaymentOrderHelper, - cardReaderPaymentReceiptHelper = cardReaderPaymentReceiptHelper, + paymentReceiptHelper = paymentReceiptHelper, cardReaderOnboardingChecker = cardReaderOnboardingChecker, cardReaderConfigProvider = cardReaderConfigProvider, ) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentReceiptHelperTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/receipt/PaymentReceiptHelperTest.kt similarity index 95% rename from WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentReceiptHelperTest.kt rename to WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/receipt/PaymentReceiptHelperTest.kt index bf8729eaf23..4dacf8a0fc2 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentReceiptHelperTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/receipt/PaymentReceiptHelperTest.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.payments.cardreader.payment +package com.woocommerce.android.ui.payments.receipt import com.woocommerce.android.AppPrefsWrapper import com.woocommerce.android.tools.SelectedSite @@ -12,13 +12,13 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.whenever @ExperimentalCoroutinesApi -class CardReaderPaymentReceiptHelperTest { +class PaymentReceiptHelperTest { private val selectedSite: SelectedSite = mock { on { get() }.thenReturn(mock()) } private val appPrefsWrapper: AppPrefsWrapper = mock() - private val helper = CardReaderPaymentReceiptHelper(selectedSite, appPrefsWrapper) + private val helper = PaymentReceiptHelper(selectedSite, appPrefsWrapper) @Test fun `given selected site, when storeReceiptUrl, then url is stored`() { diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/cardreader/ReceiptPreviewViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModelTest.kt similarity index 86% rename from WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/cardreader/ReceiptPreviewViewModelTest.kt rename to WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModelTest.kt index f0f75e36830..e0845ba0b96 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/cardreader/ReceiptPreviewViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/receipt/preview/ReceiptPreviewViewModelTest.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.payments.cardreader +package com.woocommerce.android.ui.payments.receipt.preview import androidx.lifecycle.SavedStateHandle import com.woocommerce.android.analytics.AnalyticsEvent.RECEIPT_EMAIL_FAILED @@ -9,13 +9,8 @@ import com.woocommerce.android.analytics.AnalyticsEvent.RECEIPT_PRINT_SUCCESS import com.woocommerce.android.analytics.AnalyticsEvent.RECEIPT_PRINT_TAPPED import com.woocommerce.android.analytics.AnalyticsTrackerWrapper import com.woocommerce.android.tools.SelectedSite -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.PrintReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptEvent.SendReceipt -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewFragmentArgs -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel.ReceiptPreviewEvent.LoadUrl -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel.ReceiptPreviewViewState.Content -import com.woocommerce.android.ui.payments.cardreader.receipt.ReceiptPreviewViewModel.ReceiptPreviewViewState.Loading +import com.woocommerce.android.ui.payments.receipt.preview.ReceiptPreviewViewModel.ReceiptPreviewViewState.Content +import com.woocommerce.android.ui.payments.receipt.preview.ReceiptPreviewViewModel.ReceiptPreviewViewState.Loading import com.woocommerce.android.util.PrintHtmlHelper.PrintJobResult.CANCELLED import com.woocommerce.android.util.PrintHtmlHelper.PrintJobResult.FAILED import com.woocommerce.android.util.PrintHtmlHelper.PrintJobResult.STARTED