diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt index ef8c9647d3ef..fc4771fad629 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt @@ -22,7 +22,7 @@ import org.wordpress.android.WordPress import org.wordpress.android.analytics.AnalyticsTracker import org.wordpress.android.databinding.MySiteFragmentBinding import org.wordpress.android.fluxc.store.AccountStore -import org.wordpress.android.fluxc.store.QuickStartStore +import org.wordpress.android.fluxc.store.QuickStartStore.QuickStartTask import org.wordpress.android.ui.ActivityLauncher import org.wordpress.android.ui.ActivityNavigator import org.wordpress.android.ui.FullScreenDialogFragment @@ -86,6 +86,7 @@ import org.wordpress.android.viewmodel.main.WPMainActivityViewModel import org.wordpress.android.viewmodel.observeEvent import org.wordpress.android.viewmodel.pages.PageListViewModel import java.io.File +import java.io.Serializable import javax.inject.Inject @Suppress("LargeClass") @@ -211,8 +212,8 @@ class MySiteFragment : Fragment(R.layout.my_site_fragment), override fun onConfirm(result: Bundle?) { val task = result?.getSerializableCompat( QuickStartFullScreenDialogFragment.RESULT_TASK - ) as? QuickStartStore.QuickStartTask - task?.let { viewModel.onQuickStartTaskCardClick(it) } + ) as? Serializable + (task as? QuickStartTask)?.let { viewModel.onQuickStartTaskCardClick(it) } } override fun onDismiss() { diff --git a/gradle.properties b/gradle.properties index d3977db0301c..965f64f351d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,5 +10,7 @@ android.nonTransitiveRClass=true android.nonFinalResIds=false android.enableR8.fullMode=false +ksp.useKSP2=false + # Dependency Analysis Plugin dependency.analysis.android.ignored.variants=release,wordpressVanillaDebug,wordpressVanillaRelease,wordpressWasabiDebug,wordpressWasabiRelease,wordpressJalapenoRelease,jetpackVanillaDebug,jetpackVanillaRelease,jetpackWasabiDebug,jetpackWasabiRelease,jetpackJalapenoRelease diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a093f3569bbf..68a96789c147 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -81,11 +81,11 @@ jna = '5.15.0@aar' json-path = '2.9.0' jsoup = '1.18.3' junit = '4.13.2' -kotlin-compile-testing = '1.6.0' -kotlin-main = '2.0.21' +kotlin-compile-testing = '0.7.0' +kotlin-main = '2.1.0' kotlinx-coroutines = '1.8.1' kotlinx-kover = '0.7.6' -ksp = '2.0.21-1.0.28' +ksp = '2.1.0-1.0.29' mockito-android = '5.14.2' mockito-kotlin = '4.1.0' mpandroidchart = 'v3.1.0' @@ -232,8 +232,8 @@ jna = { module = "net.java.dev.jna:jna", version.ref = "jna" } json-path = { group = "com.jayway.jsonpath", name = "json-path", version.ref = "json-path" } jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoup" } junit = { group = "junit", name = "junit", version.ref = "junit" } -kotlin-compile-testing-ksp = { group = "com.github.tschuchortdev", name = "kotlin-compile-testing-ksp", version.ref = "kotlin-compile-testing" } -kotlin-compile-testing-main = { group = "com.github.tschuchortdev", name = "kotlin-compile-testing", version.ref = "kotlin-compile-testing" } +kotlin-compile-testing-ksp = { group = "dev.zacsweers.kctfork", name = "ksp", version.ref = "kotlin-compile-testing" } +kotlin-compile-testing-main = { group = "dev.zacsweers.kctfork", name = "core", version.ref = "kotlin-compile-testing" } kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin-main" } kotlin-test-junit = { group = "org.jetbrains.kotlin", name = "kotlin-test-junit", version.ref = "kotlin-main" } kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinx-coroutines" } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListOrder.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListOrder.kt index ec8061f6b9c0..5650cb8bdcf3 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListOrder.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListOrder.kt @@ -1,13 +1,11 @@ package org.wordpress.android.fluxc.model.list -import java.util.Locale - enum class ListOrder(val value: String) { ASC("ASC"), DESC("DESC"); companion object { fun fromValue(value: String): ListOrder? { - return values().firstOrNull { it.value.toLowerCase(Locale.ROOT) == value.toLowerCase(Locale.ROOT) } + return values().firstOrNull { it.value.lowercase() == value.lowercase() } } } } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/PostListDescriptor.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/PostListDescriptor.kt index 5f8296f62f2a..10ee78ed7731 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/PostListDescriptor.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/PostListDescriptor.kt @@ -7,7 +7,6 @@ import org.wordpress.android.fluxc.model.list.ListOrder.DESC import org.wordpress.android.fluxc.model.list.PostListOrderBy.DATE import org.wordpress.android.fluxc.model.post.PostStatus import org.wordpress.android.fluxc.store.PostStore.DEFAULT_POST_STATUS_LIST -import java.util.Locale sealed class PostListDescriptor( val site: SiteModel, @@ -105,7 +104,7 @@ enum class PostListOrderBy(val value: String) { companion object { fun fromValue(value: String): PostListOrderBy? { - return values().firstOrNull { it.value.toLowerCase(Locale.ROOT) == value.toLowerCase(Locale.ROOT) } + return values().firstOrNull { it.value.lowercase() == value.lowercase() } } } } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/notification/NotificationModel.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/notification/NotificationModel.kt index 210d9d3bd39d..62cf385ed56e 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/notification/NotificationModel.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/notification/NotificationModel.kt @@ -2,7 +2,6 @@ package org.wordpress.android.fluxc.model.notification import org.wordpress.android.fluxc.tools.FormattableContent import org.wordpress.android.fluxc.tools.FormattableMeta -import java.util.Locale data class NotificationModel( val noteId: Int = 0, @@ -45,7 +44,7 @@ data class NotificationModel( companion object { private val reverseMap = values().associateBy( Kind::name) - fun fromString(type: String) = reverseMap[type.uppercase(Locale.US)] ?: UNKNOWN + fun fromString(type: String) = reverseMap[type.uppercase()] ?: UNKNOWN } } @@ -62,7 +61,7 @@ data class NotificationModel( return if (type.isEmpty()) { NONE } else { - reverseMap[type.toUpperCase(Locale.US)] ?: UNKNOWN + reverseMap[type.uppercase()] ?: UNKNOWN } } } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/BooleanTypeAdapter.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/BooleanTypeAdapter.kt index 4a71d07772e6..160675dbf0c0 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/BooleanTypeAdapter.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/BooleanTypeAdapter.kt @@ -5,7 +5,6 @@ import com.google.gson.JsonDeserializer import com.google.gson.JsonElement import com.google.gson.JsonParseException import java.lang.reflect.Type -import java.util.Locale internal class BooleanTypeAdapter : JsonDeserializer { @Suppress("VariableNaming") private val TRUE_STRINGS: Set = HashSet(listOf("true", "1", "yes")) @@ -16,9 +15,9 @@ internal class BooleanTypeAdapter : JsonDeserializer { return when { jsonPrimitive.isBoolean -> jsonPrimitive.asBoolean jsonPrimitive.isNumber -> jsonPrimitive.asNumber.toInt() == 1 - jsonPrimitive.isString -> TRUE_STRINGS.contains(jsonPrimitive.asString.toLowerCase( - Locale.getDefault() - )) + jsonPrimitive.isString -> TRUE_STRINGS.contains( + jsonPrimitive.asString.lowercase() + ) else -> false } } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/NotificationStore.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/NotificationStore.kt index b80f4cda65d8..3898a33dcfcb 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/NotificationStore.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/NotificationStore.kt @@ -21,7 +21,6 @@ import org.wordpress.android.fluxc.utils.PreferenceUtils import org.wordpress.android.util.AppLog import org.wordpress.android.util.AppLog.T import java.util.Date -import java.util.Locale import java.util.UUID import javax.inject.Inject import javax.inject.Singleton @@ -74,7 +73,7 @@ class NotificationStore @Inject constructor( companion object { private val reverseMap = values().associateBy(DeviceRegistrationErrorType::name) - fun fromString(type: String) = reverseMap[type.toUpperCase(Locale.US)] ?: GENERIC_ERROR + fun fromString(type: String) = reverseMap[type.uppercase()] ?: GENERIC_ERROR } } @@ -147,7 +146,7 @@ class NotificationStore @Inject constructor( companion object { private val reverseMap = values().associateBy(NotificationErrorType::name) - fun fromString(type: String) = reverseMap[type.toUpperCase(Locale.US)] ?: GENERIC_ERROR + fun fromString(type: String) = reverseMap[type.uppercase()] ?: GENERIC_ERROR } } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/PageStore.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/PageStore.kt index 2e1e8b51277b..cd63552066f2 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/PageStore.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/PageStore.kt @@ -24,7 +24,6 @@ import org.wordpress.android.fluxc.tools.CoroutineEngine import org.wordpress.android.util.AppLog import org.wordpress.android.util.DateTimeUtils import java.util.Calendar -import java.util.Locale import javax.inject.Inject import javax.inject.Singleton import kotlin.coroutines.Continuation @@ -83,8 +82,7 @@ class PageStore @Inject constructor( suspend fun search(site: SiteModel, searchQuery: String): List = coroutineEngine.withDefaultContext(AppLog.T.POSTS, this, "search") { getPagesFromDb(site).filter { - it.title.toLowerCase(Locale.ROOT) - .contains(searchQuery.toLowerCase(Locale.ROOT)) + it.title.lowercase().contains(searchQuery.lowercase()) } } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt index a96a980bbec0..2ca8be053e9d 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt @@ -1012,7 +1012,7 @@ open class SiteStore @Inject constructor( private const val SITE = "SITE" @JvmStatic fun fromString(string: String): NewSiteErrorType { if (!TextUtils.isEmpty(string)) { - val siteString = string.toUpperCase(Locale.US).replace(BLOG, SITE) + val siteString = string.uppercase().replace(BLOG, SITE) for (v in values()) { if (siteString.equals(v.name, ignoreCase = true)) { return v diff --git a/libs/processors/src/test/kotlin/org/wordpress/android/processor/RemoteConfigProcessorTest.kt b/libs/processors/src/test/kotlin/org/wordpress/android/processor/RemoteConfigProcessorTest.kt index 2fc0431afa3c..a03ae54620aa 100644 --- a/libs/processors/src/test/kotlin/org/wordpress/android/processor/RemoteConfigProcessorTest.kt +++ b/libs/processors/src/test/kotlin/org/wordpress/android/processor/RemoteConfigProcessorTest.kt @@ -2,8 +2,7 @@ package org.wordpress.android.processor import com.tschuchort.compiletesting.KotlinCompilation import com.tschuchort.compiletesting.SourceFile -import com.tschuchort.compiletesting.kspWithCompilation -import com.tschuchort.compiletesting.symbolProcessorProviders +import com.tschuchort.compiletesting.configureKsp import org.assertj.core.api.Assertions.assertThat import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi import org.jetbrains.kotlin.utils.addToStdlib.UnsafeCastFunction @@ -119,10 +118,14 @@ class RemoteConfigProcessorTest { private fun compile(src: List) = KotlinCompilation().apply { sources = src + fakeAppConfig - symbolProcessorProviders = listOf(RemoteConfigProcessorProvider()) - kspWithCompilation = true inheritClassPath = true + verbose = true messageOutputStream = System.out + configureKsp(useKsp2 = false) { + symbolProcessorProviders += RemoteConfigProcessorProvider() + withCompilation = true + languageVersion = "1.9" + } }.compile() // Fake AppConfig is needed, as it's a class that is expected to be present in the classpath. Originally, this class