diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3d8cd6928dba..3ef8270652a2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ androidx-constraintlayout-main = '2.2.1' androidx-core-main = '1.17.0' androidx-core-splashscreen = '1.2.0' androidx-credentials = '1.5.0' -androidx-datastore = '1.1.7' +androidx-datastore = '1.2.0' androidx-exifinterface = "1.4.1" androidx-fragment = '1.8.9' androidx-hilt = '1.3.0' @@ -96,7 +96,7 @@ sentry = '5.12.2' squareup-javapoet = "1.13.0" squareup-leakcanary = '2.14' squareup-okhttp3 = "5.2.3" -stripe-terminal = '4.7.5' +stripe-terminal = '5.0.0' swiperefreshlayout = "1.1.0" tinder-statemachine = '0.2.0' volley = "1.2.1" @@ -261,6 +261,7 @@ squareup-okhttp3-tls = { module = "com.squareup.okhttp3:okhttp-tls", version.ref squareup-okhttp3-urlconnection = { module = "com.squareup.okhttp3:okhttp-urlconnection", version.ref = "squareup-okhttp3" } stripe-terminal-taptopay = { group = "com.stripe", name = "stripeterminal-taptopay", version.ref = "stripe-terminal" } stripe-terminal-core = { group = "com.stripe", name = "stripeterminal-core", version.ref = "stripe-terminal" } +stripe-terminal-ktx = { group = "com.stripe", name = "stripeterminal-ktx", version.ref = "stripe-terminal" } tinder-statemachine = { group = "com.tinder.statemachine", name = "statemachine", version.ref = "tinder-statemachine" } volley = { module = "com.android.volley:volley", version.ref = "volley" } wellsql = { module = "org.wordpress:wellsql", version.ref = "wellsql" } diff --git a/libs/cardreader/build.gradle b/libs/cardreader/build.gradle index f491cc951f80..8866488df4b6 100644 --- a/libs/cardreader/build.gradle +++ b/libs/cardreader/build.gradle @@ -30,6 +30,7 @@ android { dependencies { runtimeOnly(libs.stripe.terminal.taptopay) implementation(libs.stripe.terminal.core) + implementation(libs.stripe.terminal.ktx) // Coroutines implementation(libs.kotlinx.coroutines.core) diff --git a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundAction.kt b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundAction.kt index d79d2c4149e2..1b9a0bf2b198 100644 --- a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundAction.kt +++ b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundAction.kt @@ -1,7 +1,7 @@ package com.woocommerce.android.cardreader.internal.payments.actions import com.stripe.stripeterminal.external.callable.Callback -import com.stripe.stripeterminal.external.models.RefundConfiguration +import com.stripe.stripeterminal.external.models.CollectRefundConfiguration import com.stripe.stripeterminal.external.models.RefundParameters import com.stripe.stripeterminal.external.models.TerminalException import com.woocommerce.android.cardreader.internal.wrappers.TerminalWrapper @@ -17,7 +17,7 @@ internal class CollectInteracRefundAction(private val terminal: TerminalWrapper) fun collectRefund( refundParameters: RefundParameters, - refundConfiguration: RefundConfiguration + refundConfiguration: CollectRefundConfiguration ): Flow { return callbackFlow { val cancelable = terminal.refundPayment( diff --git a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/wrappers/TerminalWrapper.kt b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/wrappers/TerminalWrapper.kt index a256cbbdadab..44dcb11d9d8b 100644 --- a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/wrappers/TerminalWrapper.kt +++ b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/internal/wrappers/TerminalWrapper.kt @@ -11,12 +11,12 @@ import com.stripe.stripeterminal.external.callable.PaymentIntentCallback import com.stripe.stripeterminal.external.callable.ReaderCallback import com.stripe.stripeterminal.external.callable.RefundCallback import com.stripe.stripeterminal.external.callable.TerminalListener +import com.stripe.stripeterminal.external.models.CollectRefundConfiguration import com.stripe.stripeterminal.external.models.ConnectionConfiguration import com.stripe.stripeterminal.external.models.DiscoveryConfiguration import com.stripe.stripeterminal.external.models.PaymentIntent import com.stripe.stripeterminal.external.models.PaymentIntentParameters import com.stripe.stripeterminal.external.models.Reader -import com.stripe.stripeterminal.external.models.RefundConfiguration import com.stripe.stripeterminal.external.models.RefundParameters import com.stripe.stripeterminal.external.models.SimulateReaderUpdate import com.stripe.stripeterminal.external.models.SimulatedCard @@ -40,7 +40,7 @@ internal class TerminalWrapper { logLevel: LogLevel, tokenProvider: ConnectionTokenProvider, listener: TerminalListener - ) = Terminal.initTerminal(application, logLevel, tokenProvider, listener) + ) = Terminal.init(application, logLevel, tokenProvider, listener, null) @RequiresPermission( anyOf = [ @@ -69,7 +69,9 @@ internal class TerminalWrapper { fun disconnectReader(callback: Callback) = Terminal.getInstance().disconnectReader(callback) - fun clearCachedCredentials() = Terminal.getInstance().clearCachedCredentials() + fun clearCachedCredentials() { + Terminal.getInstance().clearCachedCredentials() + } fun createPaymentIntent(params: PaymentIntentParameters, callback: PaymentIntentCallback) = Terminal.getInstance().createPaymentIntent(params, callback) @@ -85,12 +87,14 @@ internal class TerminalWrapper { fun cancelPayment(paymentIntent: PaymentIntent, callback: PaymentIntentCallback) = Terminal.getInstance().cancelPaymentIntent(paymentIntent, callback) + @Suppress("DEPRECATION") fun refundPayment( refundParameters: RefundParameters, - refundConfiguration: RefundConfiguration, + refundConfiguration: CollectRefundConfiguration, callback: Callback ) = Terminal.getInstance().collectRefundPaymentMethod(refundParameters, refundConfiguration, callback) + @Suppress("DEPRECATION") fun processRefund(callback: RefundCallback) = Terminal.getInstance().confirmRefund(callback) @@ -121,12 +125,7 @@ internal class TerminalWrapper { fun setupTapToPayUx(config: CardReaderManager.TapToPayUxConfig) { val uxConfig = TapToPayUxConfiguration.Builder() - .tapZone( - TapToPayUxConfiguration.TapZone.Manual.Builder() - .indicator(TapToPayUxConfiguration.TapZoneIndicator.DEFAULT) - .position(TapToPayUxConfiguration.TapZonePosition.Default) - .build() - ) + .tapZone(TapToPayUxConfiguration.TapZone.Default) .colors( TapToPayUxConfiguration.ColorScheme.Builder() .primary(Color.Resource(config.primaryColor)) diff --git a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundConfig.kt b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundConfig.kt index 88aac6741390..d5d3af62e175 100644 --- a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundConfig.kt +++ b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundConfig.kt @@ -1,13 +1,20 @@ package com.woocommerce.android.cardreader.payments -import com.stripe.stripeterminal.external.models.RefundConfiguration +import com.stripe.stripeterminal.external.models.CollectRefundConfiguration +import com.stripe.stripeterminal.external.models.CustomerCancellation data class RefundConfig( val enableCustomerCancellation: Boolean ) -internal fun RefundConfig.toStripeRefundConfiguration(): RefundConfiguration { - return RefundConfiguration.Builder() - .setEnableCustomerCancellation(this.enableCustomerCancellation) +internal fun RefundConfig.toStripeRefundConfiguration(): CollectRefundConfiguration { + return CollectRefundConfiguration.Builder() + .setCustomerCancellation( + if (enableCustomerCancellation) { + CustomerCancellation.ENABLE_IF_AVAILABLE + } else { + CustomerCancellation.DISABLE_IF_AVAILABLE + } + ) .build() } diff --git a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundParams.kt b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundParams.kt index 6c9c6864dd71..2d64e5a3d241 100644 --- a/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundParams.kt +++ b/libs/cardreader/src/main/java/com/woocommerce/android/cardreader/payments/RefundParams.kt @@ -1,7 +1,6 @@ package com.woocommerce.android.cardreader.payments import com.stripe.stripeterminal.external.models.RefundParameters -import com.stripe.stripeterminal.external.models.RefundParameters.Id import com.woocommerce.android.cardreader.internal.payments.PaymentUtils import java.math.BigDecimal @@ -12,8 +11,8 @@ data class RefundParams( ) internal fun RefundParams.toStripeRefundParameters(paymentUtils: PaymentUtils): RefundParameters { - return RefundParameters.Builder( - Id.Charge(id = this.chargeId), + return RefundParameters.ByChargeId( + id = this.chargeId, amount = paymentUtils.convertToSmallestCurrencyUnit(this.amount, this.currency), currency = this.currency ).build() diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/CardReaderManagerImplTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/CardReaderManagerImplTest.kt index 3bb2f517099a..946f19ed9f03 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/CardReaderManagerImplTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/CardReaderManagerImplTest.kt @@ -27,6 +27,7 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import java.math.BigDecimal +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi class CardReaderManagerImplTest : CardReaderBaseUnitTest() { private lateinit var cardReaderManager: CardReaderManagerImpl diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/InteracRefundManagerTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/InteracRefundManagerTest.kt index 88b4764390bf..f7cdfa9dfbd3 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/InteracRefundManagerTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/InteracRefundManagerTest.kt @@ -37,6 +37,7 @@ private const val USD_CURRENCY = "USD" private const val DUMMY_CHARGE_ID = "ch_abcdefgh" private const val TIMEOUT = 1000L +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) class InteracRefundManagerTest : CardReaderBaseUnitTest() { diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentManagerTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentManagerTest.kt index 134ef3f64e73..2feacd636ead 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentManagerTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentManagerTest.kt @@ -69,6 +69,7 @@ private const val DUMMY_CUSTOMER_NAME = "Tester" private const val DUMMY_SITE_URL = "www.test.test/test" private const val DUMMY_STORE_NAME = "Test store" +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi class PaymentManagerTest : CardReaderBaseUnitTest() { private lateinit var manager: PaymentManager diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentUtilsTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentUtilsTest.kt index fc06b49d605e..c27231e73940 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentUtilsTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/PaymentUtilsTest.kt @@ -16,6 +16,7 @@ import java.math.BigDecimal private const val NONE_USD_CURRENCY = "CZK" private const val USD_CURRENCY = "USD" +@Suppress("DoNotMockDataClass", "DoNotMockSealedClass") @ExperimentalCoroutinesApi class PaymentUtilsTest : CardReaderBaseUnitTest() { private lateinit var paymentUtils: PaymentUtils diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/RefundErrorMapperTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/RefundErrorMapperTest.kt index 9866aebb6e6b..c7094a98ab8d 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/RefundErrorMapperTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/RefundErrorMapperTest.kt @@ -16,6 +16,7 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.whenever import java.math.BigDecimal +@Suppress("DoNotMockDataClass") @RunWith(MockitoJUnitRunner::class) class RefundErrorMapperTest { private lateinit var mapper: RefundErrorMapper diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundActionTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundActionTest.kt index d64a9ce5706e..3e6dd6b08ad3 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundActionTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectInteracRefundActionTest.kt @@ -21,6 +21,7 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.verify import org.mockito.kotlin.whenever +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) class CollectInteracRefundActionTest : CardReaderBaseUnitTest() { diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectPaymentActionTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectPaymentActionTest.kt index 6039d81a9135..1dec929f7793 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectPaymentActionTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CollectPaymentActionTest.kt @@ -20,6 +20,7 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.verify import org.mockito.kotlin.whenever +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi internal class CollectPaymentActionTest : CardReaderBaseUnitTest() { private lateinit var action: CollectPaymentAction diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CreatePaymentActionTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CreatePaymentActionTest.kt index 275120212a9a..27a192e91c97 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CreatePaymentActionTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/CreatePaymentActionTest.kt @@ -31,6 +31,7 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import java.math.BigDecimal +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi internal class CreatePaymentActionTest : CardReaderBaseUnitTest() { private lateinit var action: CreatePaymentAction diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessInteracRefundActionTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessInteracRefundActionTest.kt index 7cd6798a600a..83ff9c4318b7 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessInteracRefundActionTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessInteracRefundActionTest.kt @@ -17,6 +17,7 @@ import org.mockito.kotlin.any import org.mockito.kotlin.mock import org.mockito.kotlin.whenever +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi @RunWith(MockitoJUnitRunner::class) class ProcessInteracRefundActionTest : CardReaderBaseUnitTest() { diff --git a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessPaymentActionTest.kt b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessPaymentActionTest.kt index df91895467f5..aa75648b2e01 100644 --- a/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessPaymentActionTest.kt +++ b/libs/cardreader/src/test/java/com/woocommerce/android/cardreader/internal/payments/actions/ProcessPaymentActionTest.kt @@ -16,6 +16,7 @@ import org.mockito.kotlin.any import org.mockito.kotlin.mock import org.mockito.kotlin.whenever +@Suppress("DoNotMockDataClass") @ExperimentalCoroutinesApi internal class ProcessPaymentActionTest : CardReaderBaseUnitTest() { private lateinit var action: ProcessPaymentAction diff --git a/libs/login/src/main/java/org/wordpress/android/login/LoginEmailFragment.java b/libs/login/src/main/java/org/wordpress/android/login/LoginEmailFragment.java index 8d4335a9b695..9c1a265763d1 100644 --- a/libs/login/src/main/java/org/wordpress/android/login/LoginEmailFragment.java +++ b/libs/login/src/main/java/org/wordpress/android/login/LoginEmailFragment.java @@ -275,7 +275,7 @@ protected void setupBottomButton(Button button) { @NonNull private Spanned formatTosText(int stringResId) { final int primaryColorResId = ContextExtensionsKt.getColorResIdFromAttribute(getContext(), - com.google.android.material.R.attr.colorPrimary); + androidx.appcompat.R.attr.colorPrimary); final String primaryColorHtml = HtmlUtils.colorResToHtmlColor(getContext(), primaryColorResId); return Html.fromHtml(getString(stringResId, "", "")); }