Merge pull request #7414 from thunderbird/bump_dependencies
Bump dependencies
This commit is contained in:
commit
c04e7de4b0
18 changed files with 106 additions and 84 deletions
|
@ -15,7 +15,6 @@ max_line_length = 120
|
|||
ij_kotlin_imports_layout = *,^
|
||||
ij_kotlin_allow_trailing_comma = true
|
||||
ij_kotlin_allow_trailing_comma_on_call_site = true
|
||||
ktlint_ignore_back_ticked_identifier = true
|
||||
|
||||
[*.{yml,yaml,json,toml,md}]
|
||||
indent_size = 2
|
||||
|
|
|
@ -508,7 +508,9 @@ object K9 : EarlyInit {
|
|||
|
||||
@Suppress("ktlint:standard:class-naming")
|
||||
enum class BACKGROUND_OPS {
|
||||
ALWAYS, NEVER, WHEN_CHECKED_AUTO_SYNC
|
||||
ALWAYS,
|
||||
NEVER,
|
||||
WHEN_CHECKED_AUTO_SYNC,
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -26,7 +26,8 @@ class NotificationChannelManager(
|
|||
val miscellaneousChannelId = "misc"
|
||||
|
||||
enum class ChannelType {
|
||||
MESSAGES, MISCELLANEOUS
|
||||
MESSAGES,
|
||||
MISCELLANEOUS,
|
||||
}
|
||||
|
||||
init {
|
||||
|
|
|
@ -14,44 +14,6 @@ import com.fsck.k9.mailstore.MimePartStreamParser
|
|||
import org.junit.Test
|
||||
|
||||
class AutocryptGossipHeaderParserTest {
|
||||
val GOSSIP_DATA_BOB = Base64.decodeBase64(
|
||||
"""
|
||||
mQGNBFoBt74BDAC8AMsjPY17kxodbfmHah38ZQipY0yfuo97WUBs2jeiFYlQdunPANi5VMgbAX+H
|
||||
Mq1XoBRs6qW+WpX8Uj11mu22c57BTUXJRbRr4TnTuuOQmT0egwFDe3x8vHSFmcf9OzG8iKR9ftUE
|
||||
+F2ewrzzmm3XY8hy7QeUgBfClZVA6A3rsX4gGawjDo6ZRBbYwckINgGX/vQk6rGs
|
||||
""".trimIndent().toByteArray(),
|
||||
)
|
||||
|
||||
val GOSSIP_HEADER_BOB =
|
||||
"""
|
||||
|addr=bob@autocrypt.example; keydata=
|
||||
| mQGNBFoBt74BDAC8AMsjPY17kxodbfmHah38ZQipY0yfuo97WUBs2jeiFYlQdunPANi5VMgbAX+H
|
||||
| Mq1XoBRs6qW+WpX8Uj11mu22c57BTUXJRbRr4TnTuuOQmT0egwFDe3x8vHSFmcf9OzG8iKR9ftUE
|
||||
| +F2ewrzzmm3XY8hy7QeUgBfClZVA6A3rsX4gGawjDo6ZRBbYwckINgGX/vQk6rGs
|
||||
""".trimMargin()
|
||||
|
||||
val GOSSIP_RAW_HEADER_BOB = "Autocrypt-Gossip: $GOSSIP_HEADER_BOB".crlf()
|
||||
|
||||
// Example from Autocrypt 1.0 appendix
|
||||
val GOSSIP_PART =
|
||||
"""
|
||||
|Autocrypt-Gossip: $GOSSIP_HEADER_BOB
|
||||
|Autocrypt-Gossip: addr=carol@autocrypt.example; keydata=
|
||||
| mQGNBFoBt8oBDADGqfZ6PqW05hUEO1dkKm+ixJXnbVriPz2tRkAqT7lTF4KBGitxo4IPv9RPIjJR
|
||||
| UMUo89ddyqQfiwKxdFCMDqFDnVRWlDaM+r8sauNJoIFwtTFuvUpkFeCI5gYvneEIIbf1r3Xx1pf5
|
||||
| Iy9qsd5eg/4Vvc2AezUv+A6p2DUNHgFMX2FfDus+EPO0wgeWbNaV601aE7UhyugB
|
||||
|Content-Type: text/plain
|
||||
|
|
||||
|Hi Bob and Carol,
|
||||
|
|
||||
|I wanted to introduce the two of you to each other.
|
||||
|
|
||||
|I hope you are both doing well! You can now both "reply all" here,
|
||||
|and the thread will remain encrypted.
|
||||
|
|
||||
|Regards,
|
||||
|Alice
|
||||
""".trimMargin().crlf()
|
||||
|
||||
private val autocryptGossipHeaderParser = AutocryptGossipHeaderParser.getInstance()
|
||||
|
||||
|
@ -115,4 +77,45 @@ class AutocryptGossipHeaderParserTest {
|
|||
|
||||
assertThat(gossipHeader).isNull()
|
||||
}
|
||||
|
||||
private companion object {
|
||||
val GOSSIP_DATA_BOB: ByteArray = Base64.decodeBase64(
|
||||
"""
|
||||
mQGNBFoBt74BDAC8AMsjPY17kxodbfmHah38ZQipY0yfuo97WUBs2jeiFYlQdunPANi5VMgbAX+H
|
||||
Mq1XoBRs6qW+WpX8Uj11mu22c57BTUXJRbRr4TnTuuOQmT0egwFDe3x8vHSFmcf9OzG8iKR9ftUE
|
||||
+F2ewrzzmm3XY8hy7QeUgBfClZVA6A3rsX4gGawjDo6ZRBbYwckINgGX/vQk6rGs
|
||||
""".trimIndent().toByteArray(),
|
||||
)
|
||||
|
||||
val GOSSIP_HEADER_BOB =
|
||||
"""
|
||||
|addr=bob@autocrypt.example; keydata=
|
||||
| mQGNBFoBt74BDAC8AMsjPY17kxodbfmHah38ZQipY0yfuo97WUBs2jeiFYlQdunPANi5VMgbAX+H
|
||||
| Mq1XoBRs6qW+WpX8Uj11mu22c57BTUXJRbRr4TnTuuOQmT0egwFDe3x8vHSFmcf9OzG8iKR9ftUE
|
||||
| +F2ewrzzmm3XY8hy7QeUgBfClZVA6A3rsX4gGawjDo6ZRBbYwckINgGX/vQk6rGs
|
||||
""".trimMargin()
|
||||
|
||||
val GOSSIP_RAW_HEADER_BOB = "Autocrypt-Gossip: $GOSSIP_HEADER_BOB".crlf()
|
||||
|
||||
// Example from Autocrypt 1.0 appendix
|
||||
val GOSSIP_PART =
|
||||
"""
|
||||
|Autocrypt-Gossip: $GOSSIP_HEADER_BOB
|
||||
|Autocrypt-Gossip: addr=carol@autocrypt.example; keydata=
|
||||
| mQGNBFoBt8oBDADGqfZ6PqW05hUEO1dkKm+ixJXnbVriPz2tRkAqT7lTF4KBGitxo4IPv9RPIjJR
|
||||
| UMUo89ddyqQfiwKxdFCMDqFDnVRWlDaM+r8sauNJoIFwtTFuvUpkFeCI5gYvneEIIbf1r3Xx1pf5
|
||||
| Iy9qsd5eg/4Vvc2AezUv+A6p2DUNHgFMX2FfDus+EPO0wgeWbNaV601aE7UhyugB
|
||||
|Content-Type: text/plain
|
||||
|
|
||||
|Hi Bob and Carol,
|
||||
|
|
||||
|I wanted to introduce the two of you to each other.
|
||||
|
|
||||
|I hope you are both doing well! You can now both "reply all" here,
|
||||
|and the thread will remain encrypted.
|
||||
|
|
||||
|Regards,
|
||||
|Alice
|
||||
""".trimMargin().crlf()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,12 +48,13 @@ class K9NotificationResourceProvider(private val context: Context) : Notificatio
|
|||
|
||||
override fun certificateErrorBody(): String = context.getString(R.string.notification_certificate_error_text)
|
||||
|
||||
override fun newMessagesTitle(newMessagesCount: Int): String =
|
||||
context.resources.getQuantityString(
|
||||
override fun newMessagesTitle(newMessagesCount: Int): String {
|
||||
return context.resources.getQuantityString(
|
||||
R.plurals.notification_new_messages_title,
|
||||
newMessagesCount,
|
||||
newMessagesCount,
|
||||
)
|
||||
}
|
||||
|
||||
override fun additionalMessages(overflowMessagesCount: Int, accountName: String): String =
|
||||
context.getString(R.string.notification_additional_messages, overflowMessagesCount, accountName)
|
||||
|
@ -77,11 +78,9 @@ class K9NotificationResourceProvider(private val context: Context) : Notificatio
|
|||
override fun checkingMailTicker(accountName: String, folderName: String): String =
|
||||
context.getString(R.string.notification_bg_sync_ticker, accountName, folderName)
|
||||
|
||||
override fun checkingMailTitle(): String =
|
||||
context.getString(R.string.notification_bg_sync_title)
|
||||
override fun checkingMailTitle(): String = context.getString(R.string.notification_bg_sync_title)
|
||||
|
||||
override fun checkingMailSeparator(): String =
|
||||
context.getString(R.string.notification_bg_title_separator)
|
||||
override fun checkingMailSeparator(): String = context.getString(R.string.notification_bg_title_separator)
|
||||
|
||||
override fun actionMarkAsRead(): String = context.getString(R.string.notification_action_mark_as_read)
|
||||
|
||||
|
|
|
@ -1372,7 +1372,9 @@ open class MessageList :
|
|||
}
|
||||
|
||||
private enum class DisplayMode {
|
||||
MESSAGE_LIST, MESSAGE_VIEW, SPLIT_VIEW
|
||||
MESSAGE_LIST,
|
||||
MESSAGE_VIEW,
|
||||
SPLIT_VIEW,
|
||||
}
|
||||
|
||||
private class LaunchData(
|
||||
|
|
|
@ -762,6 +762,9 @@ class RecipientPresenter(
|
|||
}
|
||||
|
||||
enum class CryptoMode {
|
||||
SIGN_ONLY, NO_CHOICE, CHOICE_DISABLED, CHOICE_ENABLED
|
||||
SIGN_ONLY,
|
||||
NO_CHOICE,
|
||||
CHOICE_DISABLED,
|
||||
CHOICE_ENABLED,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2046,7 +2046,8 @@ class MessageListFragment :
|
|||
}
|
||||
|
||||
private enum class FolderOperation {
|
||||
COPY, MOVE
|
||||
COPY,
|
||||
MOVE,
|
||||
}
|
||||
|
||||
private enum class Error(@StringRes val errorText: Int) {
|
||||
|
|
|
@ -986,7 +986,8 @@ class MessageViewFragment :
|
|||
}
|
||||
|
||||
private enum class FolderOperation {
|
||||
COPY, MOVE
|
||||
COPY,
|
||||
MOVE,
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -46,9 +46,7 @@ internal fun CommonExtension<*, *, *, *, *>.configureSharedConfig() {
|
|||
}
|
||||
}
|
||||
|
||||
internal fun CommonExtension<*, *, *, *, *>.configureSharedComposeConfig(
|
||||
libs: LibrariesForLibs,
|
||||
) {
|
||||
internal fun CommonExtension<*, *, *, *, *>.configureSharedComposeConfig(libs: LibrariesForLibs) {
|
||||
buildFeatures {
|
||||
compose = true
|
||||
}
|
||||
|
@ -63,9 +61,7 @@ internal fun CommonExtension<*, *, *, *, *>.configureSharedComposeConfig(
|
|||
}
|
||||
}
|
||||
|
||||
internal fun DependencyHandler.configureSharedComposeDependencies(
|
||||
libs: LibrariesForLibs,
|
||||
) {
|
||||
internal fun DependencyHandler.configureSharedComposeDependencies(libs: LibrariesForLibs) {
|
||||
val composeBom = platform(libs.androidx.compose.bom)
|
||||
implementation(composeBom)
|
||||
androidTestImplementation(composeBom)
|
||||
|
|
|
@ -19,7 +19,7 @@ configure<DetektExtension> {
|
|||
tasks.withType<Detekt>().configureEach {
|
||||
jvmTarget = ThunderbirdProjectConfig.javaCompatibilityVersion.toString()
|
||||
|
||||
exclude(DEFAULT_EXCLUDES)
|
||||
exclude(defaultExcludes)
|
||||
|
||||
reports {
|
||||
html.required.set(true)
|
||||
|
@ -31,14 +31,14 @@ tasks.withType<Detekt>().configureEach {
|
|||
tasks.withType<DetektCreateBaselineTask>().configureEach {
|
||||
jvmTarget = ThunderbirdProjectConfig.javaCompatibilityVersion.toString()
|
||||
|
||||
exclude(DEFAULT_EXCLUDES)
|
||||
exclude(defaultExcludes)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
detektPlugins(libs.detekt.plugin.compose)
|
||||
}
|
||||
|
||||
val DEFAULT_EXCLUDES = listOf(
|
||||
val defaultExcludes = listOf(
|
||||
"**/.gradle/**",
|
||||
"**/.idea/**",
|
||||
"**/build/**",
|
||||
|
|
|
@ -7,12 +7,15 @@ plugins {
|
|||
configure<SpotlessExtension> {
|
||||
kotlin {
|
||||
ktlint(libs.versions.ktlint.get())
|
||||
.userData(mapOf("android" to "true"))
|
||||
.setEditorConfigPath("$projectDir/.editorconfig")
|
||||
.editorConfigOverride(editorConfigOverride)
|
||||
target("**/*.kt")
|
||||
targetExclude("**/build/", "**/resources/", "plugins/openpgp-api-lib/")
|
||||
}
|
||||
kotlinGradle {
|
||||
ktlint(libs.versions.ktlint.get())
|
||||
.setEditorConfigPath("$projectDir/.editorconfig")
|
||||
.editorConfigOverride(editorConfigOverride)
|
||||
target("**/*.gradle.kts")
|
||||
targetExclude("**/build/")
|
||||
}
|
||||
|
@ -26,3 +29,11 @@ configure<SpotlessExtension> {
|
|||
trimTrailingWhitespace()
|
||||
}
|
||||
}
|
||||
|
||||
val editorConfigOverride = mapOf(
|
||||
"ktlint_function_naming_ignore_when_annotated_with" to "Composable",
|
||||
"ktlint_standard_property-naming" to "disabled",
|
||||
"ktlint_standard_function-signature" to "disabled",
|
||||
"ktlint_standard_parameter-list-spacing" to "disabled",
|
||||
"ktlint_ignore_back_ticked_identifier" to "true",
|
||||
)
|
||||
|
|
|
@ -40,7 +40,9 @@ fun ContentLoadingErrorView(
|
|||
}
|
||||
|
||||
enum class ContentLoadingErrorState {
|
||||
Loading, Content, Error
|
||||
Loading,
|
||||
Content,
|
||||
Error,
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
|
|
@ -2,21 +2,22 @@
|
|||
android.useAndroidX=true
|
||||
android.enableJetifier=false
|
||||
android.nonTransitiveRClass=true
|
||||
|
||||
## Disable buildFeatures flags by default
|
||||
android.defaults.buildfeatures.aidl=false
|
||||
android.defaults.buildfeatures.buildconfig=false
|
||||
android.defaults.buildfeatures.renderscript=false
|
||||
android.defaults.buildfeatures.resvalues=false
|
||||
android.defaults.buildfeatures.shaders=false
|
||||
|
||||
# Gradle
|
||||
## Ensure important default jvmargs aren't overwritten. See https://github.com/gradle/gradle/issues/19750
|
||||
org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError
|
||||
|
||||
org.gradle.parallel=true
|
||||
|
||||
org.gradle.caching=true
|
||||
org.gradle.configuration-cache=false
|
||||
|
||||
org.gradle.kotlin.dsl.allWarningsAsErrors=true
|
||||
## Workaround for AGP still using old versions of xerces and having issues with Gradle > 8.3
|
||||
## https://docs.gradle.org/current/userguide/upgrading_version_8.html#xml_parsing_now_requires_recent_parsers
|
||||
## remove once AGP is updated and uses a newer version XML parser
|
||||
systemProp.javax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
|
||||
systemProp.javax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
|
||||
systemProp.javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
# Please don't open pull requests upgrading dependencies if you're a new contributor.
|
||||
|
||||
[versions]
|
||||
gradle = "8.4"
|
||||
androidGradlePlugin = "8.1.2"
|
||||
ktlint = "0.50.0"
|
||||
gradle = "8.5"
|
||||
androidGradlePlugin = "8.1.4"
|
||||
ktlint = "1.0.1"
|
||||
|
||||
kotlin = "1.9.10"
|
||||
kotlin = "1.9.20"
|
||||
kotlinxCoroutines = "1.7.3"
|
||||
jetbrainsAnnotations = "24.0.1"
|
||||
androidxAppCompat = "1.6.1"
|
||||
androidxActivity = "1.8.0"
|
||||
androidxActivity = "1.8.1"
|
||||
androidxRecyclerView = "1.3.2"
|
||||
androidxLifecycle = "2.6.2"
|
||||
androidxNavigation = "2.7.5"
|
||||
|
@ -21,7 +21,7 @@ androidxCoreSplashscreen = "1.0.1"
|
|||
androidxPreference = "1.2.1"
|
||||
androidxDrawerLayout = "1.1.1"
|
||||
androidxTransition = "1.4.1"
|
||||
androidxComposeCompiler = "1.5.3"
|
||||
androidxComposeCompiler = "1.5.5"
|
||||
# https://developer.android.com/jetpack/compose/bom/bom-mapping
|
||||
androidxComposeBom = "2023.10.01"
|
||||
androidxComposeMaterial = "1.5.4"
|
||||
|
@ -38,29 +38,29 @@ mime4j = "0.8.9"
|
|||
okhttp = "4.12.0"
|
||||
glide = "4.16.0"
|
||||
moshi = "1.15.0"
|
||||
mockito = "5.6.0"
|
||||
mockito = "5.8.0"
|
||||
|
||||
[plugins]
|
||||
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
|
||||
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
|
||||
android-lint = { id = "com.android.lint", version.ref = "androidGradlePlugin" }
|
||||
ksp = "com.google.devtools.ksp:1.9.10-1.0.13"
|
||||
ksp = "com.google.devtools.ksp:1.9.20-1.0.14"
|
||||
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
|
||||
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
||||
spotless = "com.diffplug.spotless:6.22.0"
|
||||
detekt = "io.gitlab.arturbosch.detekt:1.23.2"
|
||||
dependency-check = "com.github.ben-manes.versions:0.48.0"
|
||||
spotless = "com.diffplug.spotless:6.23.3"
|
||||
detekt = "io.gitlab.arturbosch.detekt:1.23.4"
|
||||
dependency-check = "com.github.ben-manes.versions:0.50.0"
|
||||
|
||||
[libraries]
|
||||
desugar = "com.android.tools:desugar_jdk_libs:2.0.3"
|
||||
desugar = "com.android.tools:desugar_jdk_libs:2.0.4"
|
||||
|
||||
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
|
||||
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" }
|
||||
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
|
||||
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" }
|
||||
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
|
||||
kotlinx-datetime = "org.jetbrains.kotlinx:kotlinx-datetime:0.4.1"
|
||||
kotlinx-datetime = "org.jetbrains.kotlinx:kotlinx-datetime:0.5.0"
|
||||
kotlinx-collections-immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.6"
|
||||
jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" }
|
||||
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidxAppCompat" }
|
||||
|
@ -147,7 +147,7 @@ kxml2 = "com.github.cketti:kxml2-extracted-from-android:1.0"
|
|||
junit = "junit:junit:4.13.2"
|
||||
robolectric = "org.robolectric:robolectric:4.11.1"
|
||||
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
|
||||
mockito-kotlin = "org.mockito.kotlin:mockito-kotlin:5.1.0"
|
||||
mockito-kotlin = "org.mockito.kotlin:mockito-kotlin:5.2.1"
|
||||
turbine = "app.cash.turbine:turbine:0.13.0"
|
||||
jdom2 = "org.jdom:jdom2:2.0.6.1"
|
||||
icu4j-charset = "com.ibm.icu:icu4j-charset:72.1"
|
||||
|
@ -155,7 +155,7 @@ assertk = "com.willowtreeapps.assertk:assertk-jvm:0.27.0"
|
|||
|
||||
leakcanary-android = "com.squareup.leakcanary:leakcanary-android:2.9.1"
|
||||
|
||||
detekt-plugin-compose = "io.nlopez.compose.rules:detekt:0.3.2"
|
||||
detekt-plugin-compose = "io.nlopez.compose.rules:detekt:0.3.5"
|
||||
|
||||
[bundles]
|
||||
shared-jvm-main = [
|
||||
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,6 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
|
|
@ -196,6 +196,7 @@ internal object DecoderUtil {
|
|||
}
|
||||
|
||||
private enum class Encoding {
|
||||
Q, B
|
||||
Q,
|
||||
B,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue