diff --git a/WooCommerce/build.gradle b/WooCommerce/build.gradle index 2284aa8ab2ad..a1733d3d8db8 100644 --- a/WooCommerce/build.gradle +++ b/WooCommerce/build.gradle @@ -438,7 +438,7 @@ dependencies { implementation(libs.google.guava) - implementation(libs.google.protobuf.javalite) + implementation(libs.google.protobuf.kotlinlite) testImplementation(testFixtures(project(":libs:fluxc-plugin"))) @@ -465,17 +465,6 @@ protobuf { } } -androidComponents { - onVariants(selector().all(), { variant -> - afterEvaluate { - def capName = variant.name.capitalize() - tasks.getByName("ksp${capName}Kotlin") { - setSource(tasks.getByName("generate${capName}Proto").outputs) - } - } - }) -} - task copyGoogleServicesExampleFile(type: Copy) { from('.') into('.') diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderInteracRefundErrorMapper.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderInteracRefundErrorMapper.kt index bde50b1b83bf..aea529c9d392 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderInteracRefundErrorMapper.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderInteracRefundErrorMapper.kt @@ -14,7 +14,6 @@ class CardReaderInteracRefundErrorMapper @Inject constructor() { CardInteracRefundStatus.RefundStatusErrorType.NonRetryable -> InteracRefundFlowError.NonRetryableGeneric CardInteracRefundStatus.RefundStatusErrorType.Server -> InteracRefundFlowError.Server CardInteracRefundStatus.RefundStatusErrorType.Cancelled -> InteracRefundFlowError.Cancelled - else -> InteracRefundFlowError.Generic } @Suppress("ComplexMethod") diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/plans/networking/SitePlanRestClient.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/plans/networking/SitePlanRestClient.kt index 1b9fc48a39a3..13b7c4362d2f 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/plans/networking/SitePlanRestClient.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/plans/networking/SitePlanRestClient.kt @@ -47,7 +47,7 @@ class SitePlanRestClient @Inject constructor( when (originalResponse) { is Success -> { Success( - data = gson.fromJson?>(originalResponse.data, type) + data = gson.fromJson>(originalResponse.data, type) .filterValues { it.currentPlan == true } .toList() .firstOrNull() @@ -85,7 +85,7 @@ class SitePlanRestClient @Inject constructor( when (originalResponse) { is Success -> { Success( - data = gson.fromJson?>(originalResponse.data, type) + data = gson.fromJson>(originalResponse.data, type) .mapValues { (id, sitePlanDto) -> if (sitePlanDto.expirationDate == null) { null diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/widgets/WCMaterialOutlinedCurrencyEditTextView.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/widgets/WCMaterialOutlinedCurrencyEditTextView.kt index 4866ea6b9470..0db9be56b58c 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/widgets/WCMaterialOutlinedCurrencyEditTextView.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/widgets/WCMaterialOutlinedCurrencyEditTextView.kt @@ -56,9 +56,6 @@ class WCMaterialOutlinedCurrencyEditTextView @JvmOverloads constructor( private lateinit var currencyEditText: CurrencyEditText - val editText: TextInputEditText - get() = currencyEditText - @Inject lateinit var parameterRepository: ParameterRepository @@ -91,6 +88,9 @@ class WCMaterialOutlinedCurrencyEditTextView @JvmOverloads constructor( } } + val value: LiveData + get() = currencyEditText.value + init { context.obtainStyledAttributes( attrs, @@ -152,8 +152,9 @@ class WCMaterialOutlinedCurrencyEditTextView @JvmOverloads constructor( currencyEditText.initView(siteParameters.currencyFormattingParameters) } - val value: LiveData - get() = currencyEditText.value + override fun getEditText(): TextInputEditText { + return currencyEditText + } fun getText() = currencyEditText.text.toString() diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModelTests.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModelTests.kt index c149b9389947..8466c3389275 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModelTests.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModelTests.kt @@ -75,7 +75,7 @@ class BlazeCampaignCreationPreviewViewModelTests : BaseUnitTest() { on { formatCurrency(amount = any(), any(), any()) }.doAnswer { it.getArgument(0).toString() } } private val resourceProvider: ResourceProvider = mock { - on { getString(any()) } doAnswer { it.getArgument(0).toString() } + on { getString(any()) } doAnswer { it.getArgument(0).toString() } on { getString(any(), anyVararg()) } doAnswer { it.arguments.joinToString { it.toString() } } } private val blazeRepository: BlazeRepository = mock { diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetLocationSelectionViewModelTests.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetLocationSelectionViewModelTests.kt index 94cbcbfe6b5a..aa6113151b8e 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetLocationSelectionViewModelTests.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetLocationSelectionViewModelTests.kt @@ -33,7 +33,7 @@ class BlazeCampaignTargetLocationSelectionViewModelTests : BaseUnitTest() { onBlocking { fetchLocations(any()) } doReturn Result.success(sampleLocations) } private val resourceProvider: ResourceProvider = mock { - on { getString(any()) } doAnswer { it.getArgument(0).toString() } + on { getString(any()) } doAnswer { it.getArgument(0).toString() } } private lateinit var viewModel: BlazeCampaignTargetLocationSelectionViewModel diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetSelectionViewModelTests.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetSelectionViewModelTests.kt index aee1f3325f60..c71ce3d0f2ce 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetSelectionViewModelTests.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/blaze/creation/targets/BlazeCampaignTargetSelectionViewModelTests.kt @@ -31,7 +31,7 @@ class BlazeCampaignTargetSelectionViewModelTests : BaseUnitTest() { on { observeDevices() } doReturn devicesFlow } private val resourceProvider: ResourceProvider = mock { - on { getString(any()) } doAnswer { it.getArgument(0).toString() } + on { getString(any()) } doAnswer { it.getArgument(0).toString() } } private val analyticsTracker: AnalyticsTrackerWrapper = mock() diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilderTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilderTest.kt index 7f1b1e945c0b..fce1dc533025 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilderTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilderTest.kt @@ -40,7 +40,7 @@ class ProductDetailCardBuilderTest : BaseUnitTest() { } private val resourceProvider: ResourceProvider = mock { - on { getString(any()) } doAnswer { it.getArgument(0).toString() } + on { getString(any()) } doAnswer { it.getArgument(0).toString() } } @Before diff --git a/build.gradle b/build.gradle index fd3da89ed53d..3c1c66506bf0 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ import com.automattic.android.measure.reporters.InternalA8cCiReporter import com.automattic.android.measure.reporters.RemoteBuildCacheMetricsReporter import com.automattic.android.measure.reporters.SlowSlowTasksMetricsReporter import io.gitlab.arturbosch.detekt.Detekt +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { @@ -44,14 +45,15 @@ measureBuilds { allprojects { apply plugin: libs.plugins.detekt.get().pluginId - tasks.withType(KotlinCompile).all { - kotlinOptions { - jvmTarget = libs.versions.java.get() + tasks.withType(KotlinCompile).configureEach { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.java.get()) allWarningsAsErrors = true - freeCompilerArgs += [ - "-opt-in=kotlin.RequiresOptIn", + optIn.add("kotlin.RequiresOptIn") + freeCompilerArgs.addAll([ "-Xjvm-default=all-compatibility", - ] + "-Xannotation-default-target=param-property" + ]) } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f3e052df6e7a..b102017ac774 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -84,9 +84,9 @@ json-path = '2.9.0' json-smart = '2.6.0' junit = '4.13.2' lottie = '6.6.7' -kotlin = '2.1.10' +kotlin = '2.2.20' kotlinx-coroutines = '1.10.2' -ksp = '2.1.10-1.0.29' +ksp = '2.2.20-2.0.4' mockito-kotlin = '5.4.0' mpandroidchart = 'v3.1.0' photoview = '2.3.0' @@ -235,7 +235,7 @@ google-play-services-auth = { group = "com.google.android.gms", name = "play-ser google-play-services-code-scanner = { group = "com.google.android.gms", name = "play-services-code-scanner", version.ref = "google-play-services-code-scanner" } google-play-services-wearable = { group = "com.google.android.gms", name = "play-services-wearable", version.ref = "google-play-services-wearable" } google-play-services-mlkit-subject-segmentation = { group = "com.google.android.gms", name = "play-services-mlkit-subject-segmentation", version.ref = "google-mlkit-subject-segmentation" } -google-protobuf-javalite = { group = "com.google.protobuf", name = "protobuf-javalite", version.ref = "google-protobuf-library" } +google-protobuf-kotlinlite = { group = "com.google.protobuf", name = "protobuf-kotlin-lite", version.ref = "google-protobuf-library" } google-protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "google-protobuf-library" } google-zxing-core = { group = "com.google.zxing", name = "core", version.ref = "google-zxing" } gravatar = { group = "com.gravatar", name = "gravatar", version.ref = "gravatar" }