From b3e4419795f21654905495ed99abcc4f6d182b8a Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 10 Mar 2025 10:56:38 +0100 Subject: [PATCH 01/31] [#1813] Gradle 8.13 --- .gitignore | 1 + .../buildscript-gradle.lockfile | 54 ++++++++---------- build-conventions-secant/gradle.lockfile | 50 ++++++++++------ buildSrc/buildscript-gradle.lockfile | 54 ++++++++---------- buildSrc/gradle.lockfile | 45 +++++++++------ buildscript-gradle.lockfile | 6 +- gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 43705 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 8 ++- gradlew.bat | 2 + 10 files changed, 122 insertions(+), 102 deletions(-) diff --git a/.gitignore b/.gitignore index ae92876e4..66ef61ec1 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ local.properties .idea/other.xml .idea/appInsightsSettings.xml .idea/runConfigurations.xml +.idea/AndroidProjectSystem.xml # Other configuration files google-services.json diff --git a/build-conventions-secant/buildscript-gradle.lockfile b/build-conventions-secant/buildscript-gradle.lockfile index 6ff5ddb63..cc918af94 100644 --- a/build-conventions-secant/buildscript-gradle.lockfile +++ b/build-conventions-secant/buildscript-gradle.lockfile @@ -1,35 +1,31 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.0=classpath -org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.0=classpath +com.google.code.gson:gson:2.8.9=classpath +org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:5.2.0=classpath +org.gradle.kotlin:gradle-kotlin-dsl-plugins:5.2.0=classpath org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath -org.jetbrains.kotlin:kotlin-android-extensions:1.9.22=classpath -org.jetbrains.kotlin:kotlin-assignment:1.9.22=classpath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22=classpath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-native-utils:1.9.22=classpath -org.jetbrains.kotlin:kotlin-project-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=classpath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=classpath -org.jetbrains.kotlin:kotlin-tooling-core:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-io:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-klib:1.9.22=classpath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath +org.jetbrains.kotlin:kotlin-assignment:2.0.21=classpath +org.jetbrains.kotlin:kotlin-build-statistics:2.0.21=classpath +org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=classpath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=classpath +org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=classpath +org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=classpath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.0.21=classpath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.0.21=classpath +org.jetbrains.kotlin:kotlin-native-utils:2.0.21=classpath +org.jetbrains.kotlin:kotlin-sam-with-receiver:2.0.21=classpath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=classpath +org.jetbrains.kotlin:kotlin-tooling-core:2.0.21=classpath +org.jetbrains.kotlin:kotlin-util-io:2.0.21=classpath +org.jetbrains.kotlin:kotlin-util-klib:2.0.21=classpath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=classpath org.jetbrains:annotations:13.0=classpath empty= diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index 0a5dfbdfc..80b48a288 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -130,19 +130,22 @@ org.glassfish.jaxb:txw2:2.3.2=runtimeClasspath,testRuntimeClasspath org.jdom:jdom2:2.0.6=runtimeClasspath,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-android-extensions:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-build-common:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.23=runtimeClasspath,testRuntimeClasspath @@ -156,28 +159,37 @@ org.jetbrains.kotlin:kotlin-native-utils:1.9.23=compileClasspath,implementationD org.jetbrains.kotlin:kotlin-project-model:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.9.20=runtimeClasspath -org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath +org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.0=runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-util-io:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-util-klib:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains:annotations:13.0=compileClasspath,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath +org.jetbrains:annotations:13.0=compileClasspath,compilePluginsBlocksPluginClasspathElements,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath org.jetbrains:annotations:23.0.0=runtimeClasspath,testRuntimeClasspath org.jetbrains:markdown-jvm:0.7.3=compileClasspath,runtimeClasspath org.jetbrains:markdown:0.7.3=compileClasspath,runtimeClasspath diff --git a/buildSrc/buildscript-gradle.lockfile b/buildSrc/buildscript-gradle.lockfile index 02b9e5e1c..87ce6434c 100644 --- a/buildSrc/buildscript-gradle.lockfile +++ b/buildSrc/buildscript-gradle.lockfile @@ -1,35 +1,31 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -org.gradle.kotlin.kotlin-dsl.base:org.gradle.kotlin.kotlin-dsl.base.gradle.plugin:4.3.0=classpath -org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.0=classpath +com.google.code.gson:gson:2.8.9=classpath +org.gradle.kotlin.kotlin-dsl.base:org.gradle.kotlin.kotlin-dsl.base.gradle.plugin:5.2.0=classpath +org.gradle.kotlin:gradle-kotlin-dsl-plugins:5.2.0=classpath org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath -org.jetbrains.kotlin:kotlin-android-extensions:1.9.22=classpath -org.jetbrains.kotlin:kotlin-assignment:1.9.22=classpath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22=classpath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-native-utils:1.9.22=classpath -org.jetbrains.kotlin:kotlin-project-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=classpath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=classpath -org.jetbrains.kotlin:kotlin-tooling-core:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-io:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-klib:1.9.22=classpath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath +org.jetbrains.kotlin:kotlin-assignment:2.0.21=classpath +org.jetbrains.kotlin:kotlin-build-statistics:2.0.21=classpath +org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=classpath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=classpath +org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=classpath +org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=classpath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21=classpath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.0.21=classpath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.0.21=classpath +org.jetbrains.kotlin:kotlin-native-utils:2.0.21=classpath +org.jetbrains.kotlin:kotlin-sam-with-receiver:2.0.21=classpath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=classpath +org.jetbrains.kotlin:kotlin-tooling-core:2.0.21=classpath +org.jetbrains.kotlin:kotlin-util-io:2.0.21=classpath +org.jetbrains.kotlin:kotlin-util-klib:2.0.21=classpath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=classpath org.jetbrains:annotations:13.0=classpath empty= diff --git a/buildSrc/gradle.lockfile b/buildSrc/gradle.lockfile index 3efb5fa01..c1be98549 100644 --- a/buildSrc/gradle.lockfile +++ b/buildSrc/gradle.lockfile @@ -4,25 +4,36 @@ com.googlecode.javaewah:JavaEWAH:1.1.13=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.eclipse.jgit:org.eclipse.jgit:6.4.0.202211300538-r=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-build-common:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath +org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains:annotations:13.0=compileClasspath,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:slf4j-api:1.7.30=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath empty=annotationProcessor,apiDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 8bb4d2356..103db9804 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -155,15 +155,15 @@ org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.23=classpath org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.23=classpath org.jetbrains.kotlin:kotlin-native-utils:1.9.23=classpath org.jetbrains.kotlin:kotlin-project-model:1.9.23=classpath -org.jetbrains.kotlin:kotlin-reflect:1.9.22=classpath +org.jetbrains.kotlin:kotlin-reflect:2.0.21=classpath org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=classpath org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=classpath org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=classpath org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=classpath -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22=classpath +org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=classpath org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=classpath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=classpath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=classpath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=classpath org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=classpath org.jetbrains.kotlin:kotlin-util-io:1.9.23=classpath org.jetbrains.kotlin:kotlin-util-klib:1.9.23=classpath diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e6441136f3d4ba8a0da8d277868979cfbc8ad796..9bbc975c742b298b441bfb90dbc124400a3751b9 100644 GIT binary patch delta 34877 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�{ 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 381baa9ce..36e4933e1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionSha256Sum=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a426..faf93008b 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -203,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. diff --git a/gradlew.bat b/gradlew.bat index 7101f8e46..9b42019c7 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## From 93fcf036b92dd662972e3d6bec49920e9f5c607c Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 10 Mar 2025 11:52:58 +0100 Subject: [PATCH 02/31] AGP 8.9.0 --- build-conventions-secant/gradle.lockfile | 188 ++++++++++++------ ...ecant.android-build-conventions.gradle.kts | 11 +- build-info-lib/build.gradle.kts | 2 +- buildscript-gradle.lockfile | 123 ++++++------ gradle.properties | 2 +- 5 files changed, 197 insertions(+), 129 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index 80b48a288..54dc9c5aa 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -1,49 +1,90 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -androidx.databinding:databinding-common:8.5.0=runtimeClasspath,testRuntimeClasspath -androidx.databinding:databinding-compiler-common:8.5.0=runtimeClasspath,testRuntimeClasspath -com.android.databinding:baseLibrary:8.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.analytics-library:crash:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.analytics-library:protos:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.analytics-library:shared:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.analytics-library:tracker:31.5.0=runtimeClasspath,testRuntimeClasspath +androidx.databinding:databinding-common:8.5.0=testRuntimeClasspath +androidx.databinding:databinding-common:8.9.0=runtimeClasspath +androidx.databinding:databinding-compiler-common:8.5.0=testRuntimeClasspath +androidx.databinding:databinding-compiler-common:8.9.0=runtimeClasspath +com.android.databinding:baseLibrary:8.5.0=testRuntimeClasspath +com.android.databinding:baseLibrary:8.9.0=runtimeClasspath +com.android.tools.analytics-library:crash:31.5.0=testRuntimeClasspath +com.android.tools.analytics-library:crash:31.9.0=runtimeClasspath +com.android.tools.analytics-library:protos:31.5.0=testRuntimeClasspath +com.android.tools.analytics-library:protos:31.9.0=runtimeClasspath +com.android.tools.analytics-library:shared:31.5.0=testRuntimeClasspath +com.android.tools.analytics-library:shared:31.9.0=runtimeClasspath +com.android.tools.analytics-library:tracker:31.5.0=testRuntimeClasspath +com.android.tools.analytics-library:tracker:31.9.0=runtimeClasspath com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10=runtimeClasspath,testRuntimeClasspath com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta10=runtimeClasspath,testRuntimeClasspath -com.android.tools.build:aapt2-proto:8.5.0-11315950=runtimeClasspath,testRuntimeClasspath -com.android.tools.build:aaptcompiler:8.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.build:apksig:8.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.android.tools.build:apkzlib:8.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.android.tools.build:builder-model:8.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.android.tools.build:builder-test-api:8.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.build:builder:8.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.android.tools.build:bundletool:1.16.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.build:gradle-api:8.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.android.tools.build:gradle-settings-api:8.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.build:gradle:8.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.android.tools.build:manifest-merger:31.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:aapt2-proto:8.5.0-11315950=testRuntimeClasspath +com.android.tools.build:aapt2-proto:8.9.0-12782657=runtimeClasspath +com.android.tools.build:aaptcompiler:8.5.0=testRuntimeClasspath +com.android.tools.build:aaptcompiler:8.9.0=runtimeClasspath +com.android.tools.build:apksig:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:apksig:8.9.0=compileClasspath,runtimeClasspath +com.android.tools.build:apkzlib:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:apkzlib:8.9.0=compileClasspath,runtimeClasspath +com.android.tools.build:builder-model:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:builder-model:8.9.0=compileClasspath,runtimeClasspath +com.android.tools.build:builder-test-api:8.5.0=testRuntimeClasspath +com.android.tools.build:builder-test-api:8.9.0=runtimeClasspath +com.android.tools.build:builder:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:builder:8.9.0=compileClasspath,runtimeClasspath +com.android.tools.build:bundletool:1.16.0=testRuntimeClasspath +com.android.tools.build:bundletool:1.17.2=runtimeClasspath +com.android.tools.build:gradle-api:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:gradle-api:8.9.0=compileClasspath,runtimeClasspath +com.android.tools.build:gradle-settings-api:8.5.0=testRuntimeClasspath +com.android.tools.build:gradle-settings-api:8.9.0=runtimeClasspath +com.android.tools.build:gradle:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:gradle:8.9.0=compileClasspath,runtimeClasspath +com.android.tools.build:manifest-merger:31.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.build:manifest-merger:31.9.0=compileClasspath,runtimeClasspath com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api=runtimeClasspath,testRuntimeClasspath -com.android.tools.ddms:ddmlib:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.layoutlib:layoutlib-api:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.lint:lint-model:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.lint:lint-typedef-remover:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-device-provider-ddmlib-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-device-provider-gradle-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-test-plugin-host-coverage-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-test-plugin-host-logcat-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-test-plugin-host-retention-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools:annotations:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools:common:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools:dvlib:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools:repository:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools:sdk-common:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android.tools:sdklib:31.5.0=runtimeClasspath,testRuntimeClasspath -com.android:signflinger:8.5.0=runtimeClasspath,testRuntimeClasspath -com.android:zipflinger:8.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android.tools.ddms:ddmlib:31.5.0=testRuntimeClasspath +com.android.tools.ddms:ddmlib:31.9.0=runtimeClasspath +com.android.tools.layoutlib:layoutlib-api:31.5.0=testRuntimeClasspath +com.android.tools.layoutlib:layoutlib-api:31.9.0=runtimeClasspath +com.android.tools.lint:lint-model:31.5.0=testRuntimeClasspath +com.android.tools.lint:lint-model:31.9.0=runtimeClasspath +com.android.tools.lint:lint-typedef-remover:31.5.0=testRuntimeClasspath +com.android.tools.lint:lint-typedef-remover:31.9.0=runtimeClasspath +com.android.tools.utp:android-device-provider-ddmlib-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-device-provider-ddmlib-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-device-provider-gradle-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-device-provider-gradle-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-device-provider-profile-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-test-plugin-host-coverage-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-test-plugin-host-coverage-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-test-plugin-host-logcat-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-test-plugin-host-logcat-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-test-plugin-host-retention-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-test-plugin-host-retention-proto:31.9.0=runtimeClasspath +com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.5.0=testRuntimeClasspath +com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.9.0=runtimeClasspath +com.android.tools:annotations:31.5.0=testRuntimeClasspath +com.android.tools:annotations:31.9.0=runtimeClasspath +com.android.tools:common:31.5.0=testRuntimeClasspath +com.android.tools:common:31.9.0=runtimeClasspath +com.android.tools:dvlib:31.5.0=testRuntimeClasspath +com.android.tools:dvlib:31.9.0=runtimeClasspath +com.android.tools:repository:31.5.0=testRuntimeClasspath +com.android.tools:repository:31.9.0=runtimeClasspath +com.android.tools:sdk-common:31.5.0=testRuntimeClasspath +com.android.tools:sdk-common:31.9.0=runtimeClasspath +com.android.tools:sdklib:31.5.0=testRuntimeClasspath +com.android.tools:sdklib:31.9.0=runtimeClasspath +com.android:signflinger:8.5.0=testRuntimeClasspath +com.android:signflinger:8.9.0=runtimeClasspath +com.android:zipflinger:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +com.android:zipflinger:8.9.0=compileClasspath,runtimeClasspath com.google.android:annotations:4.1.1.4=runtimeClasspath,testRuntimeClasspath com.google.api-client:google-api-client:2.2.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.17.0=runtimeClasspath,testRuntimeClasspath @@ -71,8 +112,10 @@ com.google.j2objc:j2objc-annotations:2.8=runtimeClasspath,testRuntimeClasspath com.google.jimfs:jimfs:1.1=runtimeClasspath,testRuntimeClasspath com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.google.protobuf:protobuf-java-util:3.22.3=runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.22.3=runtimeClasspath,testRuntimeClasspath -com.google.testing.platform:core-proto:0.0.9-alpha02=runtimeClasspath,testRuntimeClasspath +com.google.protobuf:protobuf-java:3.22.3=testRuntimeClasspath +com.google.protobuf:protobuf-java:3.24.4=runtimeClasspath +com.google.testing.platform:core-proto:0.0.9-alpha02=testRuntimeClasspath +com.google.testing.platform:core-proto:0.0.9-alpha03=runtimeClasspath com.googlecode.juniversalchardet:juniversalchardet:1.0.3=runtimeClasspath,testRuntimeClasspath com.squareup:javapoet:1.10.0=runtimeClasspath,testRuntimeClasspath com.squareup:javawriter:2.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -81,17 +124,25 @@ com.sun.istack:istack-commons-runtime:3.0.8=runtimeClasspath,testRuntimeClasspat com.sun.xml.fastinfoset:FastInfoset:1.2.16=runtimeClasspath,testRuntimeClasspath com.vdurmont:semver4j:3.1.0=runtimeClasspath,testRuntimeClasspath commons-codec:commons-codec:1.15=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -commons-io:commons-io:2.15.1=runtimeClasspath,testRuntimeClasspath +commons-io:commons-io:2.15.1=testRuntimeClasspath +commons-io:commons-io:2.16.1=runtimeClasspath commons-logging:commons-logging:1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -io.grpc:grpc-api:1.57.0=runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-api:1.57.0=testRuntimeClasspath +io.grpc:grpc-api:1.57.2=runtimeClasspath io.grpc:grpc-context:1.27.2=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata -io.grpc:grpc-context:1.57.0=runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-core:1.57.0=runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-netty:1.57.0=runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf-lite:1.57.0=runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf:1.57.0=runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-stub:1.57.0=runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-context:1.57.0=testRuntimeClasspath +io.grpc:grpc-context:1.57.2=runtimeClasspath +io.grpc:grpc-core:1.57.0=testRuntimeClasspath +io.grpc:grpc-core:1.57.2=runtimeClasspath +io.grpc:grpc-netty:1.57.0=testRuntimeClasspath +io.grpc:grpc-netty:1.57.2=runtimeClasspath +io.grpc:grpc-protobuf-lite:1.57.0=testRuntimeClasspath +io.grpc:grpc-protobuf-lite:1.57.2=runtimeClasspath +io.grpc:grpc-protobuf:1.57.0=testRuntimeClasspath +io.grpc:grpc-protobuf:1.57.2=runtimeClasspath +io.grpc:grpc-stub:1.57.0=testRuntimeClasspath +io.grpc:grpc-stub:1.57.2=runtimeClasspath io.netty:netty-buffer:4.1.93.Final=runtimeClasspath,testRuntimeClasspath io.netty:netty-codec-http2:4.1.93.Final=runtimeClasspath,testRuntimeClasspath io.netty:netty-codec-http:4.1.93.Final=runtimeClasspath,testRuntimeClasspath @@ -119,9 +170,12 @@ org.apache.httpcomponents:httpclient:4.5.14=compileClasspath,implementationDepen org.apache.httpcomponents:httpcore:4.4.16=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apache.httpcomponents:httpmime:4.5.6=runtimeClasspath,testRuntimeClasspath org.bitbucket.b_c:jose4j:0.9.5=runtimeClasspath,testRuntimeClasspath -org.bouncycastle:bcpkix-jdk18on:1.77=runtimeClasspath,testRuntimeClasspath -org.bouncycastle:bcprov-jdk18on:1.77=runtimeClasspath,testRuntimeClasspath -org.bouncycastle:bcutil-jdk18on:1.77=runtimeClasspath,testRuntimeClasspath +org.bouncycastle:bcpkix-jdk18on:1.77=testRuntimeClasspath +org.bouncycastle:bcpkix-jdk18on:1.79=runtimeClasspath +org.bouncycastle:bcprov-jdk18on:1.77=testRuntimeClasspath +org.bouncycastle:bcprov-jdk18on:1.79=runtimeClasspath +org.bouncycastle:bcutil-jdk18on:1.77=testRuntimeClasspath +org.bouncycastle:bcutil-jdk18on:1.79=runtimeClasspath org.checkerframework:checker-qual:3.12.0=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata org.checkerframework:checker-qual:3.33.0=runtimeClasspath,testRuntimeClasspath org.codehaus.mojo:animal-sniffer-annotations:1.23=runtimeClasspath,testRuntimeClasspath @@ -158,9 +212,9 @@ org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommoniz org.jetbrains.kotlin:kotlin-native-utils:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-project-model:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-reflect:1.9.20=runtimeClasspath org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath +org.jetbrains.kotlin:kotlin-reflect:2.1.0=runtimeClasspath org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -177,11 +231,13 @@ org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=compilePlu org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0=runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0=runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.0=runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains.kotlin:kotlin-stdlib:2.1.0=runtimeClasspath org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-util-io:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-util-klib:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -195,13 +251,19 @@ org.jetbrains:markdown-jvm:0.7.3=compileClasspath,runtimeClasspath org.jetbrains:markdown:0.7.3=compileClasspath,runtimeClasspath org.json:json:20240205=runtimeClasspath,testRuntimeClasspath org.jvnet.staxex:stax-ex:1.8.1=runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-analysis:9.6=runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-commons:9.6=runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-tree:9.6=runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-util:9.6=runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm:9.6=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.ow2.asm:asm-analysis:9.6=testRuntimeClasspath +org.ow2.asm:asm-analysis:9.7=runtimeClasspath +org.ow2.asm:asm-commons:9.6=testRuntimeClasspath +org.ow2.asm:asm-commons:9.7=runtimeClasspath +org.ow2.asm:asm-tree:9.6=testRuntimeClasspath +org.ow2.asm:asm-tree:9.7=runtimeClasspath +org.ow2.asm:asm-util:9.6=testRuntimeClasspath +org.ow2.asm:asm-util:9.7=runtimeClasspath +org.ow2.asm:asm:9.6=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.ow2.asm:asm:9.7=compileClasspath,runtimeClasspath org.slf4j:slf4j-api:1.7.30=runtimeClasspath,testRuntimeClasspath -org.tensorflow:tensorflow-lite-metadata:0.1.0-rc2=runtimeClasspath,testRuntimeClasspath +org.tensorflow:tensorflow-lite-metadata:0.1.0-rc2=testRuntimeClasspath +org.tensorflow:tensorflow-lite-metadata:0.2.0=runtimeClasspath wtf.emulator:gradle-compat-6-1:0.16.2=runtimeClasspath,testRuntimeClasspath wtf.emulator:gradle-compat-6-6:0.16.2=runtimeClasspath,testRuntimeClasspath wtf.emulator:gradle-compat-7-6:0.16.2=runtimeClasspath,testRuntimeClasspath diff --git a/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts b/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts index 6569a3496..ac05e05a7 100644 --- a/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts +++ b/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts @@ -34,12 +34,16 @@ pluginManager.withPlugin("com.android.library") { defaultConfig { minSdk = project.property("ANDROID_MIN_SDK_VERSION").toString().toInt() // This is deprecated but we don't have a replacement for the instrumentation APKs yet + // TODO [#1815]: Gradle targetSdk deprecated #1815 + // TODO [#1815]: https://github.com/Electric-Coin-Company/zashi-android/issues/1815 targetSdk = project.property("ANDROID_TARGET_SDK_VERSION").toString().toInt() // The last two are for support of pseudolocales in debug builds. // If we add other localizations, they should be included in this list. // By explicitly setting supported locales, we strip out unused localizations from third party // libraries (e.g. play services) + // TODO [#1816]: Gradle resourceConfigurations deprecation #1816 + // TODO [#1816]: https://github.com/Electric-Coin-Company/zashi-android/issues/1816 resourceConfigurations.addAll(listOf("en", "en-rUS", "en-rGB", "en-rAU", "es", "en_XA", "ar_XB")) testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" @@ -62,13 +66,14 @@ pluginManager.withPlugin("com.android.test") { defaultConfig { minSdk = project.property("ANDROID_MIN_SDK_VERSION").toString().toInt() - // This is deprecated but we don't have a replacement for the instrumentation APKs yet targetSdk = project.property("ANDROID_TARGET_SDK_VERSION").toString().toInt() // The last two are for support of pseudolocales in debug builds. // If we add other localizations, they should be included in this list. // By explicitly setting supported locales, we strip out unused localizations from third party // libraries (e.g. play services) + // TODO [#1816]: Gradle resourceConfigurations deprecation #1816 + // TODO [#1816]: https://github.com/Electric-Coin-Company/zashi-android/issues/1816 resourceConfigurations.addAll(listOf("en", "en-rUS", "en-rGB", "en-rAU", "es", "en_XA", "ar_XB")) testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" @@ -136,7 +141,7 @@ fun com.android.build.gradle.BaseExtension.configureBaseExtension() { } val testDeviceMaxSdkVersion = project.properties["ANDROID_TARGET_SDK_VERSION"].toString().toInt() - devices { + allDevices { create("pixel2Min") { device = "Pixel 2" apiLevel = testDeviceMinSdkVersion @@ -151,7 +156,7 @@ fun com.android.build.gradle.BaseExtension.configureBaseExtension() { groups { create("defaultDevices") { - targetDevices.addAll(devices.toList()) + targetDevices.addAll(allDevices.toList()) } } } diff --git a/build-info-lib/build.gradle.kts b/build-info-lib/build.gradle.kts index 25b454060..30fa468cf 100644 --- a/build-info-lib/build.gradle.kts +++ b/build-info-lib/build.gradle.kts @@ -23,7 +23,7 @@ private val releaseNotesEsPath = "${project.rootDir}/docs/whatsNew/WHATS_NEW_ES. // Injects build information // Note timestamp is not currently injected because it effectively disables the cache since it // changes with every build -val generateBuildConfigTask = tasks.create("buildConfig") { +val generateBuildConfigTask = tasks.register("buildConfig") { val generatedDir = layout.buildDirectory.dir("generated").get().asFile val gitInfo = Git.newInfo( diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 103db9804..043a75838 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -1,49 +1,50 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -androidx.databinding:databinding-common:8.5.0=classpath -androidx.databinding:databinding-compiler-common:8.5.0=classpath -com.android.databinding:baseLibrary:8.5.0=classpath -com.android.tools.analytics-library:crash:31.5.0=classpath -com.android.tools.analytics-library:protos:31.5.0=classpath -com.android.tools.analytics-library:shared:31.5.0=classpath -com.android.tools.analytics-library:tracker:31.5.0=classpath +androidx.databinding:databinding-common:8.9.0=classpath +androidx.databinding:databinding-compiler-common:8.9.0=classpath +com.android.databinding:baseLibrary:8.9.0=classpath +com.android.tools.analytics-library:crash:31.9.0=classpath +com.android.tools.analytics-library:protos:31.9.0=classpath +com.android.tools.analytics-library:shared:31.9.0=classpath +com.android.tools.analytics-library:tracker:31.9.0=classpath com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10=classpath com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta10=classpath -com.android.tools.build:aapt2-proto:8.5.0-11315950=classpath -com.android.tools.build:aaptcompiler:8.5.0=classpath -com.android.tools.build:apksig:8.5.0=classpath -com.android.tools.build:apkzlib:8.5.0=classpath -com.android.tools.build:builder-model:8.5.0=classpath -com.android.tools.build:builder-test-api:8.5.0=classpath -com.android.tools.build:builder:8.5.0=classpath -com.android.tools.build:bundletool:1.16.0=classpath -com.android.tools.build:gradle-api:8.5.0=classpath -com.android.tools.build:gradle-settings-api:8.5.0=classpath -com.android.tools.build:gradle:8.5.0=classpath -com.android.tools.build:manifest-merger:31.5.0=classpath +com.android.tools.build:aapt2-proto:8.9.0-12782657=classpath +com.android.tools.build:aaptcompiler:8.9.0=classpath +com.android.tools.build:apksig:8.9.0=classpath +com.android.tools.build:apkzlib:8.9.0=classpath +com.android.tools.build:builder-model:8.9.0=classpath +com.android.tools.build:builder-test-api:8.9.0=classpath +com.android.tools.build:builder:8.9.0=classpath +com.android.tools.build:bundletool:1.17.2=classpath +com.android.tools.build:gradle-api:8.9.0=classpath +com.android.tools.build:gradle-settings-api:8.9.0=classpath +com.android.tools.build:gradle:8.9.0=classpath +com.android.tools.build:manifest-merger:31.9.0=classpath com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api=classpath -com.android.tools.ddms:ddmlib:31.5.0=classpath -com.android.tools.layoutlib:layoutlib-api:31.5.0=classpath -com.android.tools.lint:lint-model:31.5.0=classpath -com.android.tools.lint:lint-typedef-remover:31.5.0=classpath -com.android.tools.utp:android-device-provider-ddmlib-proto:31.5.0=classpath -com.android.tools.utp:android-device-provider-gradle-proto:31.5.0=classpath -com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.5.0=classpath -com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.5.0=classpath -com.android.tools.utp:android-test-plugin-host-coverage-proto:31.5.0=classpath -com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.5.0=classpath -com.android.tools.utp:android-test-plugin-host-logcat-proto:31.5.0=classpath -com.android.tools.utp:android-test-plugin-host-retention-proto:31.5.0=classpath -com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.5.0=classpath -com.android.tools:annotations:31.5.0=classpath -com.android.tools:common:31.5.0=classpath -com.android.tools:dvlib:31.5.0=classpath -com.android.tools:repository:31.5.0=classpath -com.android.tools:sdk-common:31.5.0=classpath -com.android.tools:sdklib:31.5.0=classpath -com.android:signflinger:8.5.0=classpath -com.android:zipflinger:8.5.0=classpath +com.android.tools.ddms:ddmlib:31.9.0=classpath +com.android.tools.layoutlib:layoutlib-api:31.9.0=classpath +com.android.tools.lint:lint-model:31.9.0=classpath +com.android.tools.lint:lint-typedef-remover:31.9.0=classpath +com.android.tools.utp:android-device-provider-ddmlib-proto:31.9.0=classpath +com.android.tools.utp:android-device-provider-gradle-proto:31.9.0=classpath +com.android.tools.utp:android-device-provider-profile-proto:31.9.0=classpath +com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.9.0=classpath +com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.9.0=classpath +com.android.tools.utp:android-test-plugin-host-coverage-proto:31.9.0=classpath +com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.9.0=classpath +com.android.tools.utp:android-test-plugin-host-logcat-proto:31.9.0=classpath +com.android.tools.utp:android-test-plugin-host-retention-proto:31.9.0=classpath +com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.9.0=classpath +com.android.tools:annotations:31.9.0=classpath +com.android.tools:common:31.9.0=classpath +com.android.tools:dvlib:31.9.0=classpath +com.android.tools:repository:31.9.0=classpath +com.android.tools:sdk-common:31.9.0=classpath +com.android.tools:sdklib:31.9.0=classpath +com.android:signflinger:8.9.0=classpath +com.android:zipflinger:8.9.0=classpath com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin:0.51.0=classpath,classpathCopy,classpathCopy2 com.github.ben-manes:gradle-versions-plugin:0.51.0=classpath com.google.android.gms:strict-version-matcher-plugin:1.2.4=classpath @@ -73,8 +74,8 @@ com.google.j2objc:j2objc-annotations:2.8=classpath com.google.jimfs:jimfs:1.1=classpath com.google.oauth-client:google-oauth-client:1.34.1=classpath com.google.protobuf:protobuf-java-util:3.22.3=classpath -com.google.protobuf:protobuf-java:3.22.3=classpath -com.google.testing.platform:core-proto:0.0.9-alpha02=classpath +com.google.protobuf:protobuf-java:3.24.4=classpath +com.google.testing.platform:core-proto:0.0.9-alpha03=classpath com.googlecode.juniversalchardet:juniversalchardet:1.0.3=classpath com.osacky.flank.gradle:fladle:0.17.4=classpath com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.3=classpathCopy @@ -91,18 +92,18 @@ com.sun.istack:istack-commons-runtime:3.0.8=classpath com.sun.xml.fastinfoset:FastInfoset:1.2.16=classpath com.vdurmont:semver4j:3.1.0=classpath commons-codec:commons-codec:1.15=classpath -commons-io:commons-io:2.15.1=classpath +commons-io:commons-io:2.16.1=classpath commons-logging:commons-logging:1.2=classpath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6=classpath io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.19.0=classpathCopy io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.20.0=classpathCopy2 -io.grpc:grpc-api:1.57.0=classpath -io.grpc:grpc-context:1.57.0=classpath -io.grpc:grpc-core:1.57.0=classpath -io.grpc:grpc-netty:1.57.0=classpath -io.grpc:grpc-protobuf-lite:1.57.0=classpath -io.grpc:grpc-protobuf:1.57.0=classpath -io.grpc:grpc-stub:1.57.0=classpath +io.grpc:grpc-api:1.57.2=classpath +io.grpc:grpc-context:1.57.2=classpath +io.grpc:grpc-core:1.57.2=classpath +io.grpc:grpc-netty:1.57.2=classpath +io.grpc:grpc-protobuf-lite:1.57.2=classpath +io.grpc:grpc-protobuf:1.57.2=classpath +io.grpc:grpc-stub:1.57.2=classpath io.netty:netty-buffer:4.1.93.Final=classpath io.netty:netty-codec-http2:4.1.93.Final=classpath io.netty:netty-codec-http:4.1.93.Final=classpath @@ -130,9 +131,9 @@ org.apache.httpcomponents:httpclient:4.5.14=classpath org.apache.httpcomponents:httpcore:4.4.16=classpath org.apache.httpcomponents:httpmime:4.5.6=classpath org.bitbucket.b_c:jose4j:0.9.5=classpath -org.bouncycastle:bcpkix-jdk18on:1.77=classpath -org.bouncycastle:bcprov-jdk18on:1.77=classpath -org.bouncycastle:bcutil-jdk18on:1.77=classpath +org.bouncycastle:bcpkix-jdk18on:1.79=classpath +org.bouncycastle:bcprov-jdk18on:1.79=classpath +org.bouncycastle:bcutil-jdk18on:1.79=classpath org.checkerframework:checker-qual:3.33.0=classpath org.codehaus.mojo:animal-sniffer-annotations:1.23=classpath org.glassfish.jaxb:jaxb-runtime:2.3.2=classpath @@ -161,8 +162,8 @@ org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=classpath org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=classpath org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=classpath org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=classpath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0=classpath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0=classpath org.jetbrains.kotlin:kotlin-stdlib:2.0.21=classpath org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=classpath org.jetbrains.kotlin:kotlin-util-io:1.9.23=classpath @@ -175,13 +176,13 @@ org.jetbrains:markdown-jvm:0.7.3=classpath org.jetbrains:markdown:0.7.3=classpath org.json:json:20240205=classpath org.jvnet.staxex:stax-ex:1.8.1=classpath -org.ow2.asm:asm-analysis:9.6=classpath -org.ow2.asm:asm-commons:9.6=classpath -org.ow2.asm:asm-tree:9.6=classpath -org.ow2.asm:asm-util:9.6=classpath -org.ow2.asm:asm:9.6=classpath +org.ow2.asm:asm-analysis:9.7=classpath +org.ow2.asm:asm-commons:9.7=classpath +org.ow2.asm:asm-tree:9.7=classpath +org.ow2.asm:asm-util:9.7=classpath +org.ow2.asm:asm:9.7=classpath org.slf4j:slf4j-api:1.7.30=classpath -org.tensorflow:tensorflow-lite-metadata:0.1.0-rc2=classpath +org.tensorflow:tensorflow-lite-metadata:0.2.0=classpath wtf.emulator:gradle-compat-6-1:0.16.2=classpath wtf.emulator:gradle-compat-6-6:0.16.2=classpath wtf.emulator:gradle-compat-7-6:0.16.2=classpath diff --git a/gradle.properties b/gradle.properties index a3b10354f..15ef4f46b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -151,7 +151,7 @@ ANDROID_COMPILE_SDK_VERSION=35 ANDROID_NDK_VERSION=27.0.12077973 -ANDROID_GRADLE_PLUGIN_VERSION=8.5.0 +ANDROID_GRADLE_PLUGIN_VERSION=8.9.0 DETEKT_VERSION=1.23.6 DETEKT_COMPOSE_RULES_VERSION=0.3.15 EMULATOR_WTF_GRADLE_PLUGIN_VERSION=0.16.2 From 757713d654be209251a4b6010a1e557228880543 Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 10 Mar 2025 12:17:41 +0100 Subject: [PATCH 03/31] Kotlin 2.1.10 --- .../secant.android-build-conventions.gradle.kts | 2 ++ ....kotlin-multiplatform-build-conventions.gradle.kts | 11 ++++++----- gradle.properties | 2 +- settings.gradle.kts | 1 + ui-design-lib/build.gradle.kts | 1 + ui-integration-test/build.gradle.kts | 1 + ui-lib/build.gradle.kts | 1 + ui-screenshot-test/build.gradle.kts | 1 + 8 files changed, 14 insertions(+), 6 deletions(-) diff --git a/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts b/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts index ac05e05a7..99e84380d 100644 --- a/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts +++ b/build-conventions-secant/src/main/kotlin/secant.android-build-conventions.gradle.kts @@ -197,6 +197,8 @@ fun com.android.build.gradle.BaseExtension.configureBaseExtension() { } } +// TODO [#1817]: KotlinOptions deprecation +// TODO [#1817]: https://github.com/Electric-Coin-Company/zashi-android/issues/1817 fun CommonExtension<*, *, *, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { (this as ExtensionAware).extensions.configure("kotlinOptions", block) } diff --git a/build-conventions-secant/src/main/kotlin/secant.kotlin-multiplatform-build-conventions.gradle.kts b/build-conventions-secant/src/main/kotlin/secant.kotlin-multiplatform-build-conventions.gradle.kts index 64ead7332..b018cbc20 100644 --- a/build-conventions-secant/src/main/kotlin/secant.kotlin-multiplatform-build-conventions.gradle.kts +++ b/build-conventions-secant/src/main/kotlin/secant.kotlin-multiplatform-build-conventions.gradle.kts @@ -4,11 +4,12 @@ pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") { targets.all { compilations.all { - compilerOptions.options.allWarningsAsErrors.set( - project.property("ZCASH_IS_TREAT_WARNINGS_AS_ERRORS").toString().toBoolean() - ) - - compilerOptions.options.freeCompilerArgs.addAll("-opt-in=kotlin.RequiresOptIn") + compileTaskProvider.configure { + compilerOptions.allWarningsAsErrors.set( + project.property("ZCASH_IS_TREAT_WARNINGS_AS_ERRORS").toString().toBoolean() + ) + compilerOptions.freeCompilerArgs.addAll("-opt-in=kotlin.RequiresOptIn") + } } } } diff --git a/gradle.properties b/gradle.properties index 15ef4f46b..02764c2d9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -201,7 +201,7 @@ FIREBASE_BOM_VERSION_MATCHER=33.1.1 GOOGLE_AUTH_LIB_JAVA_VERSION=1.18.0 JACOCO_VERSION=0.8.12 KEYSTONE_VERSION=0.7.10 -KOTLIN_VERSION=1.9.23 +KOTLIN_VERSION=2.1.10 KOTLINX_COROUTINES_VERSION=1.8.0 KOTLINX_DATETIME_VERSION=0.5.0 KOTLINX_IMMUTABLE_COLLECTIONS_VERSION=0.3.7 diff --git a/settings.gradle.kts b/settings.gradle.kts index b9e6d930b..1b3c5cc5e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -60,6 +60,7 @@ pluginManagement { id("com.github.ben-manes.versions") version (extra["GRADLE_VERSIONS_PLUGIN_VERSION"].toString()) apply false id("com.osacky.fulladle") version (extra["FULLADLE_VERSION"].toString()) apply false id("org.jetbrains.kotlinx.kover") version (extra["KOVER_VERSION"].toString()) apply false + id("org.jetbrains.kotlin.plugin.compose") version (kotlinVersion) apply (false) id("wtf.emulator.gradle") version (extra["EMULATOR_WTF_GRADLE_PLUGIN_VERSION"].toString()) apply false kotlin("android") version (kotlinVersion) apply false kotlin("jvm") version (kotlinVersion) apply false diff --git a/ui-design-lib/build.gradle.kts b/ui-design-lib/build.gradle.kts index 9380791d3..9b2178895 100644 --- a/ui-design-lib/build.gradle.kts +++ b/ui-design-lib/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("com.android.library") kotlin("android") + id("org.jetbrains.kotlin.plugin.compose") id("secant.android-build-conventions") id("secant.jacoco-conventions") } diff --git a/ui-integration-test/build.gradle.kts b/ui-integration-test/build.gradle.kts index 24684f4c1..6375f9df2 100644 --- a/ui-integration-test/build.gradle.kts +++ b/ui-integration-test/build.gradle.kts @@ -5,6 +5,7 @@ import model.NetworkDimension plugins { id("com.android.test") kotlin("android") + id("org.jetbrains.kotlin.plugin.compose") id("secant.android-build-conventions") id("wtf.emulator.gradle") id("secant.emulator-wtf-conventions") diff --git a/ui-lib/build.gradle.kts b/ui-lib/build.gradle.kts index 5934f2ef7..292a88974 100644 --- a/ui-lib/build.gradle.kts +++ b/ui-lib/build.gradle.kts @@ -6,6 +6,7 @@ plugins { id("com.android.library") kotlin("android") kotlin("plugin.serialization") + id("org.jetbrains.kotlin.plugin.compose") id("secant.android-build-conventions") id("wtf.emulator.gradle") id("secant.emulator-wtf-conventions") diff --git a/ui-screenshot-test/build.gradle.kts b/ui-screenshot-test/build.gradle.kts index 47694c185..15dbc2410 100644 --- a/ui-screenshot-test/build.gradle.kts +++ b/ui-screenshot-test/build.gradle.kts @@ -5,6 +5,7 @@ import model.NetworkDimension plugins { id("com.android.test") kotlin("android") + id("org.jetbrains.kotlin.plugin.compose") id("secant.android-build-conventions") id("wtf.emulator.gradle") id("secant.emulator-wtf-conventions") From 54d8c86d7acecfd77ec972ddc0dbb579433a1fe5 Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 10 Mar 2025 12:34:27 +0100 Subject: [PATCH 04/31] Update dependency locks --- build-conventions-secant/gradle.lockfile | 64 +++++++++++++----------- build-info-lib/gradle.lockfile | 36 +++++++------ buildSrc/gradle.lockfile | 2 - buildscript-gradle.lockfile | 55 +++++++++----------- configuration-api-lib/gradle.lockfile | 50 +++++++++--------- crash-lib/gradle.lockfile | 48 +++++++++--------- preference-api-lib/gradle.lockfile | 44 ++++++++-------- spackle-lib/gradle.lockfile | 44 ++++++++-------- 8 files changed, 167 insertions(+), 176 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index 54dc9c5aa..110b26bb5 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -182,37 +182,43 @@ org.codehaus.mojo:animal-sniffer-annotations:1.23=runtimeClasspath,testRuntimeCl org.glassfish.jaxb:jaxb-runtime:2.3.2=runtimeClasspath,testRuntimeClasspath org.glassfish.jaxb:txw2:2.3.2=runtimeClasspath,testRuntimeClasspath org.jdom:jdom2:2.0.6=runtimeClasspath,testRuntimeClasspath -org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-android-extensions:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-android-extensions:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-build-statistics:2.1.10=runtimeClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=runtimeClasspath +org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=runtimeClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.23=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.23=testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.1.10=runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.1.10=runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.23=testRuntimeClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.1.10=runtimeClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-native-utils:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-project-model:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-native-utils:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-native-utils:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-project-model:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath org.jetbrains.kotlin:kotlin-reflect:2.1.0=runtimeClasspath org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest @@ -220,30 +226,32 @@ org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21= org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0=runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0=runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-stdlib:2.1.0=runtimeClasspath -org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-util-io:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-util-klib:1.9.23=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-tooling-core:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-util-io:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-util-io:2.1.10=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-util-klib-metadata:2.1.10=runtimeClasspath +org.jetbrains.kotlin:kotlin-util-klib:2.1.10=runtimeClasspath org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=testRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,runtimeClasspath org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains:annotations:13.0=compileClasspath,compilePluginsBlocksPluginClasspathElements,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath org.jetbrains:annotations:23.0.0=runtimeClasspath,testRuntimeClasspath diff --git a/build-info-lib/gradle.lockfile b/build-info-lib/gradle.lockfile index 9ed3fe70a..00badd4dd 100644 --- a/build-info-lib/gradle.lockfile +++ b/build-info-lib/gradle.lockfile @@ -4,29 +4,29 @@ junit:junit:4.13.2=commonTestImplementationCopy,jvmTestCompileClasspath,jvmTestImplementationCopy,jvmTestRuntimeClasspath org.hamcrest:hamcrest-core:1.3=commonTestImplementationCopy,jvmTestCompileClasspath,jvmTestImplementationCopy,jvmTestRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-build-common:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.23=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.20=kotlinCompilerClasspathCopy -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.20=kotlinKlibCommonizerClasspathCopy -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.23=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.1.10=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-script-runtime:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-scripting-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-common:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.20=kotlinCompilerPluginClasspathJvmMainCopy,kotlinCompilerPluginClasspathJvmTestCopy,kotlinCompilerPluginClasspathMetadataCommonMainCopy,kotlinCompilerPluginClasspathMetadataMainCopy org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21=kotlinCompilerPluginClasspathJvmMainCopy2,kotlinCompilerPluginClasspathJvmTestCopy2,kotlinCompilerPluginClasspathMetadataCommonMainCopy2,kotlinCompilerPluginClasspathMetadataMainCopy2 org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-jvm:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20=commonTestImplementationCopy,jvmTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib-common:1.8.10=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlin:kotlin-stdlib-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain,metadataCommonMainCompileClasspath @@ -35,14 +35,12 @@ org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20=commonMainApiCopy,commonMainCompi org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21=jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlin:kotlin-stdlib:1.6.20=commonTestImplementationCopy,jvmTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-stdlib:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath -org.jetbrains.kotlin:kotlin-test-annotations-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata -org.jetbrains.kotlin:kotlin-test-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata +org.jetbrains.kotlin:kotlin-stdlib:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath org.jetbrains.kotlin:kotlin-test-junit:1.6.20=commonTestImplementationCopy,jvmTestImplementationCopy -org.jetbrains.kotlin:kotlin-test-junit:1.9.23=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test-junit:2.1.10=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlin:kotlin-test:1.6.20=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestCompileClasspathCopy2,jvmTestImplementationCopy,jvmTestImplementationDependenciesMetadataCopy,jvmTestRuntimeClasspathCopy,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlin:kotlin-test:1.6.21=commonTestImplementationCopy2,jvmTestImplementationCopy2 -org.jetbrains.kotlin:kotlin-test:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains:annotations:13.0=commonTestImplementationCopy,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestImplementationCopy,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath empty=allSourceSetsCompileDependenciesMetadataCopy,allSourceSetsRuntimeDependenciesMetadataCopy,archives,archivesCopy,commonMainApiDependenciesMetadataCopy,commonMainCompileOnlyCopy,commonMainImplementationCopy,commonMainIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadataCopy,commonMainRuntimeOnlyCopy,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyCopy,commonTestIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadataCopy,commonTestRuntimeOnlyCopy,commonTestRuntimeOnlyDependenciesMetadata,default,defaultCopy,jvmCompileOnlyCopy,jvmMainApiCopy,jvmMainCompileOnlyCopy,jvmMainImplementationCopy,jvmMainIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadataCopy,jvmMainRuntimeOnlyCopy,jvmMainRuntimeOnlyDependenciesMetadata,jvmRuntimeOnlyCopy,jvmSourceArtifactsCopy,jvmTestCompileOnlyCopy,jvmTestIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadataCopy,jvmTestRuntimeOnlyCopy,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathCopy,kotlinNativeCompilerPluginClasspath,kotlinNativeCompilerPluginClasspathCopy,kotlinScriptDef,kotlinScriptDefCopy,kotlinScriptDefExtensions,kotlinScriptDefExtensionsCopy,metadataCommonMainCompileOnlyCopy,metadataCompileOnlyCopy,testKotlinScriptDef,testKotlinScriptDefCopy,testKotlinScriptDefExtensions,testKotlinScriptDefExtensionsCopy diff --git a/buildSrc/gradle.lockfile b/buildSrc/gradle.lockfile index c1be98549..bea71974d 100644 --- a/buildSrc/gradle.lockfile +++ b/buildSrc/gradle.lockfile @@ -17,7 +17,6 @@ org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinKlibCommonizerClasspa org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain @@ -31,7 +30,6 @@ org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinComp org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains:annotations:13.0=compileClasspath,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 043a75838..883897ff6 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -45,8 +45,9 @@ com.android.tools:sdk-common:31.9.0=classpath com.android.tools:sdklib:31.9.0=classpath com.android:signflinger:8.9.0=classpath com.android:zipflinger:8.9.0=classpath -com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin:0.51.0=classpath,classpathCopy,classpathCopy2 -com.github.ben-manes:gradle-versions-plugin:0.51.0=classpath +com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin:0.51.0=classpathCopy,classpathCopy2 +com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin:0.52.0=classpath +com.github.ben-manes:gradle-versions-plugin:0.52.0=classpath com.google.android.gms:strict-version-matcher-plugin:1.2.4=classpath com.google.android:annotations:4.1.1.4=classpath com.google.api-client:google-api-client:2.2.0=classpath @@ -82,9 +83,9 @@ com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.3=classpathCopy com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.4=classpath,classpathCopy2 com.squareup.moshi:moshi-kotlin:1.12.0=classpath com.squareup.moshi:moshi:1.12.0=classpath -com.squareup.okhttp3:okhttp:4.11.0=classpath -com.squareup.okio:okio-jvm:3.2.0=classpath -com.squareup.okio:okio:3.2.0=classpath +com.squareup.okhttp3:okhttp:4.12.0=classpath +com.squareup.okio:okio-jvm:3.6.0=classpath +com.squareup.okio:okio:3.6.0=classpath com.squareup:javapoet:1.10.0=classpath com.squareup:javawriter:2.5.0=classpath com.sun.activation:javax.activation:1.2.0=classpath @@ -139,37 +140,31 @@ org.codehaus.mojo:animal-sniffer-annotations:1.23=classpath org.glassfish.jaxb:jaxb-runtime:2.3.2=classpath org.glassfish.jaxb:txw2:2.3.2=classpath org.jdom:jdom2:2.0.6=classpath -org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath -org.jetbrains.kotlin:kotlin-android-extensions:1.9.23=classpath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=classpath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=classpath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=classpath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=classpath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.23=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.23=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.23=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.23=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.23=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23=classpath -org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.23=classpath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.23=classpath -org.jetbrains.kotlin:kotlin-native-utils:1.9.23=classpath -org.jetbrains.kotlin:kotlin-project-model:1.9.23=classpath +org.jetbrains.kotlin:kotlin-bom:2.0.21=classpath +org.jetbrains.kotlin:kotlin-build-statistics:2.1.10=classpath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=classpath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=classpath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.1.10=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.1.10=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.1.10=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.1.10=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.1.10=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.10=classpath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.1.10=classpath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.1.10=classpath +org.jetbrains.kotlin:kotlin-native-utils:2.1.10=classpath org.jetbrains.kotlin:kotlin-reflect:2.0.21=classpath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=classpath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=classpath org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=classpath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0=classpath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0=classpath org.jetbrains.kotlin:kotlin-stdlib:2.0.21=classpath -org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=classpath -org.jetbrains.kotlin:kotlin-util-io:1.9.23=classpath -org.jetbrains.kotlin:kotlin-util-klib:1.9.23=classpath +org.jetbrains.kotlin:kotlin-tooling-core:2.1.10=classpath +org.jetbrains.kotlin:kotlin-util-io:2.1.10=classpath +org.jetbrains.kotlin:kotlin-util-klib-metadata:2.1.10=classpath +org.jetbrains.kotlin:kotlin-util-klib:2.1.10=classpath org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.3=classpath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=classpath org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3=classpath org.jetbrains:annotations:13.0=classpath org.jetbrains:markdown-jvm:0.7.3=classpath diff --git a/configuration-api-lib/gradle.lockfile b/configuration-api-lib/gradle.lockfile index 98ce459e1..42b2f3193 100644 --- a/configuration-api-lib/gradle.lockfile +++ b/configuration-api-lib/gradle.lockfile @@ -8,56 +8,54 @@ org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-build-common:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.23=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.1.10=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-script-runtime:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-scripting-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-common:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-jvm:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-stdlib-common:1.8.10=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlin:kotlin-stdlib-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain,metadataCommonMainCompileClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-stdlib:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath -org.jetbrains.kotlin:kotlin-test-annotations-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata -org.jetbrains.kotlin:kotlin-test-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata -org.jetbrains.kotlin:kotlin-test-junit:1.9.23=jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.kotlin:kotlin-test:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath +org.jetbrains.kotlin:kotlin-test-junit:2.1.10=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.7=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.5.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.4.0=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath diff --git a/crash-lib/gradle.lockfile b/crash-lib/gradle.lockfile index 179d21d6e..e51f42896 100644 --- a/crash-lib/gradle.lockfile +++ b/crash-lib/gradle.lockfile @@ -8,33 +8,33 @@ org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-build-common:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.23=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.20=kotlinCompilerClasspathCopy -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.20=kotlinKlibCommonizerClasspathCopy -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.23=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.1.10=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-script-runtime:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-scripting-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-common:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.20=kotlinCompilerPluginClasspathJvmMainCopy,kotlinCompilerPluginClasspathJvmTestCopy,kotlinCompilerPluginClasspathMetadataCommonMainCopy,kotlinCompilerPluginClasspathMetadataMainCopy org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21=kotlinCompilerPluginClasspathJvmMainCopy2,kotlinCompilerPluginClasspathJvmTestCopy2,kotlinCompilerPluginClasspathMetadataCommonMainCopy2,kotlinCompilerPluginClasspathMetadataMainCopy2 org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-jvm:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20=commonTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib-common:1.8.10=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlin:kotlin-stdlib-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain,metadataCommonMainCompileClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0=commonTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0=commonTestImplementationCopy @@ -44,43 +44,41 @@ org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20=metadataCommonMainCompileClasspat org.jetbrains.kotlin:kotlin-stdlib:1.6.20=commonTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-stdlib:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath -org.jetbrains.kotlin:kotlin-test-annotations-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata -org.jetbrains.kotlin:kotlin-test-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata +org.jetbrains.kotlin:kotlin-stdlib:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath org.jetbrains.kotlin:kotlin-test-junit:1.6.20=commonTestImplementationCopy -org.jetbrains.kotlin:kotlin-test-junit:1.9.23=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test-junit:2.1.10=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlin:kotlin-test:1.6.20=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlin:kotlin-test:1.6.21=commonTestImplementationCopy2 -org.jetbrains.kotlin:kotlin-test:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.1=commonTestImplementationCopy org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementationCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.2=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.3=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.5.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.3.2=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-datetime:0.3.3=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-datetime:0.4.0=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains:annotations:13.0=commonTestImplementationCopy,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath diff --git a/preference-api-lib/gradle.lockfile b/preference-api-lib/gradle.lockfile index 2ba2f7cec..de502fda4 100644 --- a/preference-api-lib/gradle.lockfile +++ b/preference-api-lib/gradle.lockfile @@ -8,64 +8,62 @@ org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-build-common:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.23=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.20=kotlinCompilerClasspathCopy -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.20=kotlinKlibCommonizerClasspathCopy -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.23=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.1.10=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-script-runtime:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-scripting-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-common:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.20=kotlinCompilerPluginClasspathJvmMainCopy,kotlinCompilerPluginClasspathJvmTestCopy,kotlinCompilerPluginClasspathMetadataCommonMainCopy,kotlinCompilerPluginClasspathMetadataMainCopy org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21=kotlinCompilerPluginClasspathJvmMainCopy2,kotlinCompilerPluginClasspathJvmTestCopy2,kotlinCompilerPluginClasspathMetadataCommonMainCopy2,kotlinCompilerPluginClasspathMetadataMainCopy2 org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-jvm:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-stdlib-common:1.8.10=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlin:kotlin-stdlib-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain,metadataCommonMainCompileClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20=commonMainApiCopy,commonMainApiCopy2,commonMainCompileOnlyDependenciesMetadataCopy,commonMainImplementationDependenciesMetadataCopy,commonMainRuntimeOnlyDependenciesMetadataCopy,commonTestApiCopy,commonTestApiDependenciesMetadataCopy,commonTestCompileOnlyDependenciesMetadataCopy,commonTestImplementationDependenciesMetadataCopy,commonTestRuntimeOnlyDependenciesMetadataCopy,compileClasspathCopy,jvmApiCopy,jvmApiElementsCopy,jvmCompileClasspathCopy,jvmImplementationCopy,jvmMainApiDependenciesMetadataCopy,jvmMainCompileOnlyDependenciesMetadataCopy,jvmMainImplementationDependenciesMetadataCopy,jvmMainRuntimeOnlyDependenciesMetadataCopy,jvmRuntimeClasspathCopy,jvmRuntimeElementsCopy,jvmTestApiCopy,jvmTestApiDependenciesMetadataCopy,jvmTestCompileClasspathCopy,jvmTestCompileOnlyDependenciesMetadataCopy,jvmTestImplementationCopy,jvmTestImplementationCopy2,jvmTestImplementationDependenciesMetadataCopy,jvmTestRuntimeClasspathCopy,jvmTestRuntimeOnlyDependenciesMetadataCopy,metadataApiCopy,metadataApiElementsCopy,metadataCommonMainApiCopy,metadataCommonMainCompileClasspathCopy,metadataCommonMainImplementationCopy,metadataCompileClasspathCopy,metadataImplementationCopy org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21=jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-stdlib:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath -org.jetbrains.kotlin:kotlin-test-annotations-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata -org.jetbrains.kotlin:kotlin-test-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata -org.jetbrains.kotlin:kotlin-test-junit:1.9.23=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath +org.jetbrains.kotlin:kotlin-test-junit:2.1.10=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlin:kotlin-test:1.6.20=commonTestImplementationCopy,commonTestImplementationDependenciesMetadataCopy,jvmTestCompileClasspathCopy,jvmTestCompileClasspathCopy2,jvmTestImplementationCopy,jvmTestImplementationDependenciesMetadataCopy,jvmTestRuntimeClasspathCopy,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlin:kotlin-test:1.6.21=commonTestImplementationCopy2,jvmTestImplementationCopy2 -org.jetbrains.kotlin:kotlin-test:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.1=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementationCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath diff --git a/spackle-lib/gradle.lockfile b/spackle-lib/gradle.lockfile index b6e6f6b52..36c1abc1a 100644 --- a/spackle-lib/gradle.lockfile +++ b/spackle-lib/gradle.lockfile @@ -8,33 +8,33 @@ org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-build-common:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.23=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.20=kotlinCompilerClasspathCopy -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.20=kotlinKlibCommonizerClasspathCopy -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.23=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.1.10=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-script-runtime:1.9.23=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-scripting-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-common:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.20=kotlinCompilerPluginClasspathJvmMainCopy,kotlinCompilerPluginClasspathJvmTestCopy,kotlinCompilerPluginClasspathMetadataCommonMainCopy,kotlinCompilerPluginClasspathMetadataMainCopy org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21=kotlinCompilerPluginClasspathJvmMainCopy2,kotlinCompilerPluginClasspathJvmTestCopy2,kotlinCompilerPluginClasspathMetadataCommonMainCopy2,kotlinCompilerPluginClasspathMetadataMainCopy2 org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-scripting-jvm:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain +org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.10=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20=commonTestImplementationCopy,jvmTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib-common:1.8.10=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlin:kotlin-stdlib-common:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain,metadataCommonMainCompileClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0=commonTestImplementationCopy,jvmTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0=commonTestImplementationCopy,jvmTestImplementationCopy @@ -43,34 +43,32 @@ org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20=metadataCommonMainCompileClasspat org.jetbrains.kotlin:kotlin-stdlib:1.6.20=commonTestImplementationCopy,jvmTestImplementationCopy org.jetbrains.kotlin:kotlin-stdlib:1.8.20=metadataCommonMainCompileClasspath org.jetbrains.kotlin:kotlin-stdlib:1.8.21=kotlinCompilerPluginClasspathMetadataCommonMain -org.jetbrains.kotlin:kotlin-stdlib:1.9.23=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath -org.jetbrains.kotlin:kotlin-test-annotations-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata -org.jetbrains.kotlin:kotlin-test-common:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata +org.jetbrains.kotlin:kotlin-stdlib:2.1.10=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath org.jetbrains.kotlin:kotlin-test-junit:1.6.20=commonTestImplementationCopy,jvmTestImplementationCopy -org.jetbrains.kotlin:kotlin-test-junit:1.9.23=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test-junit:2.1.10=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlin:kotlin-test:1.6.20=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlin:kotlin-test:1.6.21=commonTestImplementationCopy2,jvmTestImplementationCopy2 -org.jetbrains.kotlin:kotlin-test:1.9.23=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.1=commonTestImplementationCopy,jvmTestImplementationCopy org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementationCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains:annotations:13.0=commonTestImplementationCopy,jvmTestImplementationCopy,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath From 877ab1836d5494475aa44ad6e7d5ae705fc12671 Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 10 Mar 2025 12:35:53 +0100 Subject: [PATCH 05/31] Gradle Versions Plugin 0.52.0 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 02764c2d9..1be55ecea 100644 --- a/gradle.properties +++ b/gradle.properties @@ -161,7 +161,7 @@ FLANK_VERSION=23.10.1 FULLADLE_VERSION=0.17.4 # Handled GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.1 -GRADLE_VERSIONS_PLUGIN_VERSION=0.51.0 +GRADLE_VERSIONS_PLUGIN_VERSION=0.52.0 JGIT_VERSION=6.4.0.202211300538-r KTLINT_VERSION=1.2.1 KOIN_VERSION=3.5.6 From 5179be8ab6880dcfb56a3c776e144dc529251398 Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 10 Mar 2025 14:56:06 +0100 Subject: [PATCH 06/31] Fulladle 0.17.5 --- buildscript-gradle.lockfile | 5 +++-- gradle.properties | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 883897ff6..d86380e9d 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -78,9 +78,10 @@ com.google.protobuf:protobuf-java-util:3.22.3=classpath com.google.protobuf:protobuf-java:3.24.4=classpath com.google.testing.platform:core-proto:0.0.9-alpha03=classpath com.googlecode.juniversalchardet:juniversalchardet:1.0.3=classpath -com.osacky.flank.gradle:fladle:0.17.4=classpath +com.osacky.flank.gradle:fladle:0.17.5=classpath com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.3=classpathCopy -com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.4=classpath,classpathCopy2 +com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.4=classpathCopy2 +com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.5=classpath com.squareup.moshi:moshi-kotlin:1.12.0=classpath com.squareup.moshi:moshi:1.12.0=classpath com.squareup.okhttp3:okhttp:4.12.0=classpath diff --git a/gradle.properties b/gradle.properties index 1be55ecea..7ecb3a7c0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -158,7 +158,7 @@ EMULATOR_WTF_GRADLE_PLUGIN_VERSION=0.16.2 # Handled FIREBASE_CRASHLYTICS_BUILD_TOOLS_VERSION=2.9.9 FLANK_VERSION=23.10.1 -FULLADLE_VERSION=0.17.4 +FULLADLE_VERSION=0.17.5 # Handled GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.1 GRADLE_VERSIONS_PLUGIN_VERSION=0.52.0 From ec189878857d3f4e19a4fc313a7e375003ebe5ab Mon Sep 17 00:00:00 2001 From: Honza Date: Mon, 10 Mar 2025 15:28:07 +0100 Subject: [PATCH 07/31] AndroidX dependencies --- .gitignore | 37 +++++++++++++++++++------------------ gradle.properties | 40 ++++++++++++++++++++-------------------- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index 66ef61ec1..ffdfb800d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,30 +11,31 @@ local.properties *.hprof # IDE-specific files -.idea/caches -.idea/compiler.xml -.idea/dictionaries/ -.idea/gradle.xml -.idea/libraries/ -.idea/modules.xml -.idea/tasks.xml -.idea/workspace.xml -.idea/deploymentTargetSelector.xml -.idea/migrations.xml -.idea/studiobot.xml -.idea/material_theme_project_new.xml -.idea/csv-editor.xml -.idea/vcs.xml -.idea/deploymentTargetDropDown.xml +.idea/AndroidProjectSystem.xml +.idea/androidTestResultsUserPreferences.xml +.idea/appInsightsSettings.xml .idea/artifacts .idea/assetWizardSettings.xml +.idea/caches +.idea/compiler.xml +.idea/csv-editor.xml +.idea/deploymentTargetDropDown.xml +.idea/deploymentTargetSelector.xml +.idea/dictionaries/ +.idea/gradle.xml .idea/inspectionProfiles/Project_Default.xml -.idea/androidTestResultsUserPreferences.xml .idea/kotlinc.xml +.idea/libraries/ +.idea/material_theme_project_new.xml +.idea/migrations.xml +.idea/modules.xml .idea/other.xml -.idea/appInsightsSettings.xml +.idea/project.prompts.xml .idea/runConfigurations.xml -.idea/AndroidProjectSystem.xml +.idea/studiobot.xml +.idea/tasks.xml +.idea/vcs.xml +.idea/workspace.xml # Other configuration files google-services.json diff --git a/gradle.properties b/gradle.properties index 7ecb3a7c0..d80d8b44a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -167,32 +167,32 @@ KTLINT_VERSION=1.2.1 KOIN_VERSION=3.5.6 ACCOMPANIST_PERMISSIONS_VERSION=0.34.0 -ANDROIDX_ACTIVITY_VERSION=1.9.2 -ANDROIDX_ANNOTATION_VERSION=1.7.1 -ANDROIDX_BIOMETRIC_VERSION=1.2.0-alpha05 -ANDROIDX_CAMERA_VERSION=1.3.2 +ANDROIDX_ACTIVITY_VERSION=1.10.1 +ANDROIDX_ANNOTATION_VERSION=1.9.1 +ANDROIDX_BIOMETRIC_VERSION=1.4.0-alpha02 +ANDROIDX_CAMERA_VERSION=1.4.1 ANDROIDX_COMPOSE_COMPILER_VERSION=1.5.11 ANDROIDX_COMPOSE_MATERIAL3_VERSION=1.3.1 -ANDROIDX_COMPOSE_MATERIAL_ICONS_VERSION=1.6.5 -ANDROIDX_COMPOSE_VERSION=1.6.6 -ANDROIDX_CONSTRAINTLAYOUT_VERSION=1.0.1 -ANDROIDX_CORE_VERSION=1.12.0 -ANDROIDX_ESPRESSO_VERSION=3.5.1 -ANDROIDX_LIFECYCLE_VERSION=2.7.0 -ANDROIDX_FRAGMENT_VERSION=1.8.4 -ANDROIDX_NAVIGATION_COMPOSE_VERSION=2.7.7 +ANDROIDX_COMPOSE_MATERIAL_ICONS_VERSION=1.7.8 +ANDROIDX_COMPOSE_VERSION=1.7.8 +ANDROIDX_CONSTRAINTLAYOUT_VERSION=1.1.1 +ANDROIDX_CORE_VERSION=1.15.0 +ANDROIDX_ESPRESSO_VERSION=3.6.1 +ANDROIDX_LIFECYCLE_VERSION=2.8.7 +ANDROIDX_FRAGMENT_VERSION=1.8.6 +ANDROIDX_NAVIGATION_COMPOSE_VERSION=2.8.7 ANDROIDX_PROFILE_INSTALLER_VERSION=1.3.1 ANDROIDX_SECURITY_CRYPTO_VERSION=1.1.0-alpha06 ANDROIDX_SPLASH_SCREEN_VERSION=1.0.1 -ANDROIDX_TEST_JUNIT_VERSION=1.1.5 -ANDROIDX_TEST_ORCHESTRATOR_VERSION=1.4.2 -ANDROIDX_TEST_CORE_VERSION=1.5.0 -ANDROIDX_TEST_MACROBENCHMARK_VERSION=1.2.3 -ANDROIDX_TEST_RUNNER_VERSION=1.5.2 -ANDROIDX_STARTUP_VERSION=1.1.1 -ANDROIDX_TEST_SERVICE_VERSION=1.4.2 +ANDROIDX_TEST_JUNIT_VERSION=1.2.1 +ANDROIDX_TEST_ORCHESTRATOR_VERSION=1.5.1 +ANDROIDX_TEST_CORE_VERSION=1.6.1 +ANDROIDX_TEST_MACROBENCHMARK_VERSION=1.3.3 +ANDROIDX_TEST_RUNNER_VERSION=1.6.2 +ANDROIDX_STARTUP_VERSION=1.2.1 +ANDROIDX_TEST_SERVICE_VERSION=1.5.0 ANDROIDX_UI_AUTOMATOR_VERSION=2.3.0 -ANDROIDX_WORK_MANAGER_VERSION=2.9.0 +ANDROIDX_WORK_MANAGER_VERSION=2.10.0 ANDROIDX_BROWSER_VERSION=1.8.0 CORE_LIBRARY_DESUGARING_VERSION=2.1.2 # Handled From da5e104b5a0fb960828f99085fb7e0df1b743544 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 09:31:47 +0100 Subject: [PATCH 08/31] Regenerate dependency locks - Closes #1526 - Fix previous changes --- README.md | 4 - build-conventions-secant/gradle.lockfile | 268 ++++++------------ gradle.properties | 6 +- .../zcash/ui/fixture/ConfigInfoFixture.kt | 2 +- 4 files changed, 94 insertions(+), 186 deletions(-) diff --git a/README.md b/README.md index df1d38485..81f286cc7 100644 --- a/README.md +++ b/README.md @@ -76,8 +76,4 @@ the project, these steps are not necessary.) running automated tests. 1. Test coverage for Compose code will be low, due to [known limitations](https://github.com/jacoco/jacoco/issues/1208) in the interaction between Compose and Jacoco. 1. Adding the `espresso-contrib` dependency will cause builds to fail, due to conflicting classes. This is a [known issue](https://github.com/Electric-Coin-Company/zcash-android-wallet-sdk/issues/306) with the Zcash Android SDK. -1. Android Studio will warn about the Gradle checksum. This is a [known issue](https://github.com/gradle/gradle/issues/9361) and can be safely ignored. 1. During app first launch, the following exception starting with `AndroidKeysetManager: keyset not found, will generate a new one` is printed twice. This exception is not an error, and the code is not being invoked twice. -1. While syncing Gradle files, build error with `org.jetbrains:markdown` dependency locking might occur. It is a - filed [known issue](https://github.com/Electric-Coin-Company/zashi-android/issues/1526) that does not block building - the project. diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index 110b26bb5..016aa9cb2 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -1,281 +1,193 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -androidx.databinding:databinding-common:8.5.0=testRuntimeClasspath androidx.databinding:databinding-common:8.9.0=runtimeClasspath -androidx.databinding:databinding-compiler-common:8.5.0=testRuntimeClasspath androidx.databinding:databinding-compiler-common:8.9.0=runtimeClasspath -com.android.databinding:baseLibrary:8.5.0=testRuntimeClasspath com.android.databinding:baseLibrary:8.9.0=runtimeClasspath -com.android.tools.analytics-library:crash:31.5.0=testRuntimeClasspath com.android.tools.analytics-library:crash:31.9.0=runtimeClasspath -com.android.tools.analytics-library:protos:31.5.0=testRuntimeClasspath com.android.tools.analytics-library:protos:31.9.0=runtimeClasspath -com.android.tools.analytics-library:shared:31.5.0=testRuntimeClasspath com.android.tools.analytics-library:shared:31.9.0=runtimeClasspath -com.android.tools.analytics-library:tracker:31.5.0=testRuntimeClasspath com.android.tools.analytics-library:tracker:31.9.0=runtimeClasspath -com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10=runtimeClasspath,testRuntimeClasspath -com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta10=runtimeClasspath,testRuntimeClasspath -com.android.tools.build:aapt2-proto:8.5.0-11315950=testRuntimeClasspath +com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10=runtimeClasspath +com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta10=runtimeClasspath com.android.tools.build:aapt2-proto:8.9.0-12782657=runtimeClasspath -com.android.tools.build:aaptcompiler:8.5.0=testRuntimeClasspath com.android.tools.build:aaptcompiler:8.9.0=runtimeClasspath -com.android.tools.build:apksig:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android.tools.build:apksig:8.9.0=compileClasspath,runtimeClasspath -com.android.tools.build:apkzlib:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android.tools.build:apkzlib:8.9.0=compileClasspath,runtimeClasspath -com.android.tools.build:builder-model:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android.tools.build:builder-model:8.9.0=compileClasspath,runtimeClasspath -com.android.tools.build:builder-test-api:8.5.0=testRuntimeClasspath com.android.tools.build:builder-test-api:8.9.0=runtimeClasspath -com.android.tools.build:builder:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android.tools.build:builder:8.9.0=compileClasspath,runtimeClasspath -com.android.tools.build:bundletool:1.16.0=testRuntimeClasspath com.android.tools.build:bundletool:1.17.2=runtimeClasspath -com.android.tools.build:gradle-api:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android.tools.build:gradle-api:8.9.0=compileClasspath,runtimeClasspath -com.android.tools.build:gradle-settings-api:8.5.0=testRuntimeClasspath com.android.tools.build:gradle-settings-api:8.9.0=runtimeClasspath -com.android.tools.build:gradle:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android.tools.build:gradle:8.9.0=compileClasspath,runtimeClasspath -com.android.tools.build:manifest-merger:31.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android.tools.build:manifest-merger:31.9.0=compileClasspath,runtimeClasspath -com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api=runtimeClasspath,testRuntimeClasspath -com.android.tools.ddms:ddmlib:31.5.0=testRuntimeClasspath +com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api=runtimeClasspath com.android.tools.ddms:ddmlib:31.9.0=runtimeClasspath -com.android.tools.layoutlib:layoutlib-api:31.5.0=testRuntimeClasspath com.android.tools.layoutlib:layoutlib-api:31.9.0=runtimeClasspath -com.android.tools.lint:lint-model:31.5.0=testRuntimeClasspath com.android.tools.lint:lint-model:31.9.0=runtimeClasspath -com.android.tools.lint:lint-typedef-remover:31.5.0=testRuntimeClasspath com.android.tools.lint:lint-typedef-remover:31.9.0=runtimeClasspath -com.android.tools.utp:android-device-provider-ddmlib-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-device-provider-ddmlib-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-device-provider-gradle-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-device-provider-gradle-proto:31.9.0=runtimeClasspath com.android.tools.utp:android-device-provider-profile-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-test-plugin-host-coverage-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-test-plugin-host-coverage-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-test-plugin-host-logcat-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-test-plugin-host-logcat-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-test-plugin-host-retention-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-test-plugin-host-retention-proto:31.9.0=runtimeClasspath -com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.5.0=testRuntimeClasspath com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.9.0=runtimeClasspath -com.android.tools:annotations:31.5.0=testRuntimeClasspath com.android.tools:annotations:31.9.0=runtimeClasspath -com.android.tools:common:31.5.0=testRuntimeClasspath com.android.tools:common:31.9.0=runtimeClasspath -com.android.tools:dvlib:31.5.0=testRuntimeClasspath com.android.tools:dvlib:31.9.0=runtimeClasspath -com.android.tools:repository:31.5.0=testRuntimeClasspath com.android.tools:repository:31.9.0=runtimeClasspath -com.android.tools:sdk-common:31.5.0=testRuntimeClasspath com.android.tools:sdk-common:31.9.0=runtimeClasspath -com.android.tools:sdklib:31.5.0=testRuntimeClasspath com.android.tools:sdklib:31.9.0=runtimeClasspath -com.android:signflinger:8.5.0=testRuntimeClasspath com.android:signflinger:8.9.0=runtimeClasspath -com.android:zipflinger:8.5.0=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.android:zipflinger:8.9.0=compileClasspath,runtimeClasspath -com.google.android:annotations:4.1.1.4=runtimeClasspath,testRuntimeClasspath -com.google.api-client:google-api-client:2.2.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.api.grpc:proto-google-common-protos:2.17.0=runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-androidpublisher:v3-rev20231030-2.0.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.auth:google-auth-library-credentials:1.18.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.18.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.auto.value:auto-value-annotations:1.10.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.code.findbugs:jsr305:3.0.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.code.gson:gson:2.10=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata -com.google.code.gson:gson:2.10.1=runtimeClasspath,testRuntimeClasspath -com.google.crypto.tink:tink:1.7.0=runtimeClasspath,testRuntimeClasspath -com.google.dagger:dagger:2.28.3=runtimeClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.16=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata -com.google.errorprone:error_prone_annotations:2.18.0=runtimeClasspath,testRuntimeClasspath -com.google.flatbuffers:flatbuffers-java:1.12.0=runtimeClasspath,testRuntimeClasspath -com.google.guava:failureaccess:1.0.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.guava:guava:31.1-jre=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata -com.google.guava:guava:32.0.1-jre=runtimeClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.http-client:google-http-client-apache-v2:1.42.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.http-client:google-http-client-gson:1.42.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.http-client:google-http-client:1.42.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.3=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata -com.google.j2objc:j2objc-annotations:2.8=runtimeClasspath,testRuntimeClasspath -com.google.jimfs:jimfs:1.1=runtimeClasspath,testRuntimeClasspath -com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.google.protobuf:protobuf-java-util:3.22.3=runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.22.3=testRuntimeClasspath +com.google.android:annotations:4.1.1.4=runtimeClasspath +com.google.api-client:google-api-client:2.2.0=compileClasspath,runtimeClasspath +com.google.api.grpc:proto-google-common-protos:2.17.0=runtimeClasspath +com.google.apis:google-api-services-androidpublisher:v3-rev20231030-2.0.0=compileClasspath,runtimeClasspath +com.google.auth:google-auth-library-credentials:1.18.0=compileClasspath,runtimeClasspath +com.google.auth:google-auth-library-oauth2-http:1.18.0=compileClasspath,runtimeClasspath +com.google.auto.value:auto-value-annotations:1.10.1=compileClasspath,runtimeClasspath +com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath +com.google.code.gson:gson:2.10=compileClasspath +com.google.code.gson:gson:2.10.1=runtimeClasspath +com.google.crypto.tink:tink:1.7.0=runtimeClasspath +com.google.dagger:dagger:2.28.3=runtimeClasspath +com.google.errorprone:error_prone_annotations:2.16=compileClasspath +com.google.errorprone:error_prone_annotations:2.18.0=runtimeClasspath +com.google.flatbuffers:flatbuffers-java:1.12.0=runtimeClasspath +com.google.guava:failureaccess:1.0.1=compileClasspath,runtimeClasspath +com.google.guava:guava:31.1-jre=compileClasspath +com.google.guava:guava:32.0.1-jre=runtimeClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,runtimeClasspath +com.google.http-client:google-http-client-apache-v2:1.42.3=compileClasspath,runtimeClasspath +com.google.http-client:google-http-client-gson:1.42.3=compileClasspath,runtimeClasspath +com.google.http-client:google-http-client:1.42.3=compileClasspath,runtimeClasspath +com.google.j2objc:j2objc-annotations:1.3=compileClasspath +com.google.j2objc:j2objc-annotations:2.8=runtimeClasspath +com.google.jimfs:jimfs:1.1=runtimeClasspath +com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-java-util:3.22.3=runtimeClasspath com.google.protobuf:protobuf-java:3.24.4=runtimeClasspath -com.google.testing.platform:core-proto:0.0.9-alpha02=testRuntimeClasspath com.google.testing.platform:core-proto:0.0.9-alpha03=runtimeClasspath -com.googlecode.juniversalchardet:juniversalchardet:1.0.3=runtimeClasspath,testRuntimeClasspath -com.squareup:javapoet:1.10.0=runtimeClasspath,testRuntimeClasspath -com.squareup:javawriter:2.5.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -com.sun.activation:javax.activation:1.2.0=runtimeClasspath,testRuntimeClasspath -com.sun.istack:istack-commons-runtime:3.0.8=runtimeClasspath,testRuntimeClasspath -com.sun.xml.fastinfoset:FastInfoset:1.2.16=runtimeClasspath,testRuntimeClasspath -com.vdurmont:semver4j:3.1.0=runtimeClasspath,testRuntimeClasspath -commons-codec:commons-codec:1.15=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -commons-io:commons-io:2.15.1=testRuntimeClasspath +com.googlecode.juniversalchardet:juniversalchardet:1.0.3=runtimeClasspath +com.squareup:javapoet:1.10.0=runtimeClasspath +com.squareup:javawriter:2.5.0=compileClasspath,runtimeClasspath +com.sun.activation:javax.activation:1.2.0=runtimeClasspath +com.sun.istack:istack-commons-runtime:3.0.8=runtimeClasspath +com.sun.xml.fastinfoset:FastInfoset:1.2.16=runtimeClasspath +com.vdurmont:semver4j:3.1.0=runtimeClasspath +commons-codec:commons-codec:1.15=compileClasspath,runtimeClasspath commons-io:commons-io:2.16.1=runtimeClasspath -commons-logging:commons-logging:1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -io.grpc:grpc-api:1.57.0=testRuntimeClasspath +commons-logging:commons-logging:1.2=compileClasspath,runtimeClasspath +io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6=compileClasspath,runtimeClasspath io.grpc:grpc-api:1.57.2=runtimeClasspath -io.grpc:grpc-context:1.27.2=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata -io.grpc:grpc-context:1.57.0=testRuntimeClasspath +io.grpc:grpc-context:1.27.2=compileClasspath io.grpc:grpc-context:1.57.2=runtimeClasspath -io.grpc:grpc-core:1.57.0=testRuntimeClasspath io.grpc:grpc-core:1.57.2=runtimeClasspath -io.grpc:grpc-netty:1.57.0=testRuntimeClasspath io.grpc:grpc-netty:1.57.2=runtimeClasspath -io.grpc:grpc-protobuf-lite:1.57.0=testRuntimeClasspath io.grpc:grpc-protobuf-lite:1.57.2=runtimeClasspath -io.grpc:grpc-protobuf:1.57.0=testRuntimeClasspath io.grpc:grpc-protobuf:1.57.2=runtimeClasspath -io.grpc:grpc-stub:1.57.0=testRuntimeClasspath io.grpc:grpc-stub:1.57.2=runtimeClasspath -io.netty:netty-buffer:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec-http2:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec-http:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec-socks:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-common:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-handler-proxy:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-handler:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-resolver:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-transport-native-unix-common:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.netty:netty-transport:4.1.93.Final=runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-api:0.31.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -io.opencensus:opencensus-contrib-http-util:0.31.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -io.perfmark:perfmark-api:0.26.0=runtimeClasspath,testRuntimeClasspath -jakarta.activation:jakarta.activation-api:1.2.1=runtimeClasspath,testRuntimeClasspath -jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=runtimeClasspath,testRuntimeClasspath -javax.annotation:javax.annotation-api:1.3.2=runtimeClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=runtimeClasspath,testRuntimeClasspath -net.java.dev.jna:jna-platform:5.6.0=runtimeClasspath,testRuntimeClasspath -net.java.dev.jna:jna:5.6.0=runtimeClasspath,testRuntimeClasspath -net.sf.jopt-simple:jopt-simple:4.9=runtimeClasspath,testRuntimeClasspath -net.sf.kxml:kxml2:2.3.0=runtimeClasspath,testRuntimeClasspath -org.apache.commons:commons-compress:1.21=runtimeClasspath,testRuntimeClasspath -org.apache.httpcomponents:httpclient:4.5.14=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.apache.httpcomponents:httpcore:4.4.16=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.apache.httpcomponents:httpmime:4.5.6=runtimeClasspath,testRuntimeClasspath -org.bitbucket.b_c:jose4j:0.9.5=runtimeClasspath,testRuntimeClasspath -org.bouncycastle:bcpkix-jdk18on:1.77=testRuntimeClasspath +io.netty:netty-buffer:4.1.93.Final=runtimeClasspath +io.netty:netty-codec-http2:4.1.93.Final=runtimeClasspath +io.netty:netty-codec-http:4.1.93.Final=runtimeClasspath +io.netty:netty-codec-socks:4.1.93.Final=runtimeClasspath +io.netty:netty-codec:4.1.93.Final=runtimeClasspath +io.netty:netty-common:4.1.93.Final=runtimeClasspath +io.netty:netty-handler-proxy:4.1.93.Final=runtimeClasspath +io.netty:netty-handler:4.1.93.Final=runtimeClasspath +io.netty:netty-resolver:4.1.93.Final=runtimeClasspath +io.netty:netty-transport-native-unix-common:4.1.93.Final=runtimeClasspath +io.netty:netty-transport:4.1.93.Final=runtimeClasspath +io.opencensus:opencensus-api:0.31.1=compileClasspath,runtimeClasspath +io.opencensus:opencensus-contrib-http-util:0.31.1=compileClasspath,runtimeClasspath +io.perfmark:perfmark-api:0.26.0=runtimeClasspath +jakarta.activation:jakarta.activation-api:1.2.1=runtimeClasspath +jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=runtimeClasspath +javax.annotation:javax.annotation-api:1.3.2=runtimeClasspath +javax.inject:javax.inject:1=runtimeClasspath +net.java.dev.jna:jna-platform:5.6.0=runtimeClasspath +net.java.dev.jna:jna:5.6.0=runtimeClasspath +net.sf.jopt-simple:jopt-simple:4.9=runtimeClasspath +net.sf.kxml:kxml2:2.3.0=runtimeClasspath +org.apache.commons:commons-compress:1.21=runtimeClasspath +org.apache.httpcomponents:httpclient:4.5.14=compileClasspath,runtimeClasspath +org.apache.httpcomponents:httpcore:4.4.16=compileClasspath,runtimeClasspath +org.apache.httpcomponents:httpmime:4.5.6=runtimeClasspath +org.bitbucket.b_c:jose4j:0.9.5=runtimeClasspath org.bouncycastle:bcpkix-jdk18on:1.79=runtimeClasspath -org.bouncycastle:bcprov-jdk18on:1.77=testRuntimeClasspath org.bouncycastle:bcprov-jdk18on:1.79=runtimeClasspath -org.bouncycastle:bcutil-jdk18on:1.77=testRuntimeClasspath org.bouncycastle:bcutil-jdk18on:1.79=runtimeClasspath -org.checkerframework:checker-qual:3.12.0=compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata -org.checkerframework:checker-qual:3.33.0=runtimeClasspath,testRuntimeClasspath -org.codehaus.mojo:animal-sniffer-annotations:1.23=runtimeClasspath,testRuntimeClasspath -org.glassfish.jaxb:jaxb-runtime:2.3.2=runtimeClasspath,testRuntimeClasspath -org.glassfish.jaxb:txw2:2.3.2=runtimeClasspath,testRuntimeClasspath -org.jdom:jdom2:2.0.6=runtimeClasspath,testRuntimeClasspath -org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-android-extensions:1.9.23=testRuntimeClasspath -org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +org.checkerframework:checker-qual:3.12.0=compileClasspath +org.checkerframework:checker-qual:3.33.0=runtimeClasspath +org.codehaus.mojo:animal-sniffer-annotations:1.23=runtimeClasspath +org.glassfish.jaxb:jaxb-runtime:2.3.2=runtimeClasspath +org.glassfish.jaxb:txw2:2.3.2=runtimeClasspath +org.jdom:jdom2:2.0.6=runtimeClasspath +org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-statistics:2.1.10=runtimeClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10=runtimeClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.1.10=runtimeClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.1.10=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.1.10=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.1.10=runtimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.1.10=runtimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.1.10=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.10=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.1.10=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.1.10=runtimeClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-native-utils:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-native-utils:2.1.10=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-project-model:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath org.jetbrains.kotlin:kotlin-reflect:2.1.0=runtimeClasspath -org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-common:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.23=testRuntimeClasspath org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0=runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0=runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-stdlib:2.1.0=runtimeClasspath -org.jetbrains.kotlin:kotlin-tooling-core:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-tooling-core:2.1.10=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-util-io:1.9.23=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-util-io:2.1.10=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-util-klib-metadata:2.1.10=runtimeClasspath org.jetbrains.kotlin:kotlin-util-klib:2.1.10=runtimeClasspath -org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=testRuntimeClasspath +org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.3=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,runtimeClasspath -org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains:annotations:13.0=compileClasspath,compilePluginsBlocksPluginClasspathElements,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath -org.jetbrains:annotations:23.0.0=runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3=compileClasspath,runtimeClasspath +org.jetbrains:annotations:13.0=compileClasspath,compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain +org.jetbrains:annotations:23.0.0=runtimeClasspath org.jetbrains:markdown-jvm:0.7.3=compileClasspath,runtimeClasspath org.jetbrains:markdown:0.7.3=compileClasspath,runtimeClasspath -org.json:json:20240205=runtimeClasspath,testRuntimeClasspath -org.jvnet.staxex:stax-ex:1.8.1=runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-analysis:9.6=testRuntimeClasspath +org.json:json:20240205=runtimeClasspath +org.jvnet.staxex:stax-ex:1.8.1=runtimeClasspath org.ow2.asm:asm-analysis:9.7=runtimeClasspath -org.ow2.asm:asm-commons:9.6=testRuntimeClasspath org.ow2.asm:asm-commons:9.7=runtimeClasspath -org.ow2.asm:asm-tree:9.6=testRuntimeClasspath org.ow2.asm:asm-tree:9.7=runtimeClasspath -org.ow2.asm:asm-util:9.6=testRuntimeClasspath org.ow2.asm:asm-util:9.7=runtimeClasspath -org.ow2.asm:asm:9.6=implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.ow2.asm:asm:9.7=compileClasspath,runtimeClasspath -org.slf4j:slf4j-api:1.7.30=runtimeClasspath,testRuntimeClasspath -org.tensorflow:tensorflow-lite-metadata:0.1.0-rc2=testRuntimeClasspath +org.slf4j:slf4j-api:1.7.30=runtimeClasspath org.tensorflow:tensorflow-lite-metadata:0.2.0=runtimeClasspath -wtf.emulator:gradle-compat-6-1:0.16.2=runtimeClasspath,testRuntimeClasspath -wtf.emulator:gradle-compat-6-6:0.16.2=runtimeClasspath,testRuntimeClasspath -wtf.emulator:gradle-compat-7-6:0.16.2=runtimeClasspath,testRuntimeClasspath -wtf.emulator:gradle-compat-api:0.16.2=runtimeClasspath,testRuntimeClasspath -wtf.emulator:gradle-compat:0.16.2=runtimeClasspath,testRuntimeClasspath -wtf.emulator:gradle-plugin:0.16.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -empty=annotationProcessor,apiDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions +wtf.emulator:gradle-compat-6-1:0.16.2=runtimeClasspath +wtf.emulator:gradle-compat-6-6:0.16.2=runtimeClasspath +wtf.emulator:gradle-compat-7-6:0.16.2=runtimeClasspath +wtf.emulator:gradle-compat-api:0.16.2=runtimeClasspath +wtf.emulator:gradle-compat:0.16.2=runtimeClasspath +wtf.emulator:gradle-plugin:0.16.2=compileClasspath,runtimeClasspath +empty=annotationProcessor,kotlinScriptDefExtensions diff --git a/gradle.properties b/gradle.properties index d80d8b44a..f7dcf5656 100644 --- a/gradle.properties +++ b/gradle.properties @@ -180,8 +180,8 @@ ANDROIDX_CORE_VERSION=1.15.0 ANDROIDX_ESPRESSO_VERSION=3.6.1 ANDROIDX_LIFECYCLE_VERSION=2.8.7 ANDROIDX_FRAGMENT_VERSION=1.8.6 -ANDROIDX_NAVIGATION_COMPOSE_VERSION=2.8.7 -ANDROIDX_PROFILE_INSTALLER_VERSION=1.3.1 +ANDROIDX_NAVIGATION_COMPOSE_VERSION=2.8.8 +ANDROIDX_PROFILE_INSTALLER_VERSION=1.4.1 ANDROIDX_SECURITY_CRYPTO_VERSION=1.1.0-alpha06 ANDROIDX_SPLASH_SCREEN_VERSION=1.0.1 ANDROIDX_TEST_JUNIT_VERSION=1.2.1 @@ -189,7 +189,7 @@ ANDROIDX_TEST_ORCHESTRATOR_VERSION=1.5.1 ANDROIDX_TEST_CORE_VERSION=1.6.1 ANDROIDX_TEST_MACROBENCHMARK_VERSION=1.3.3 ANDROIDX_TEST_RUNNER_VERSION=1.6.2 -ANDROIDX_STARTUP_VERSION=1.2.1 +ANDROIDX_STARTUP_VERSION=1.2.0 ANDROIDX_TEST_SERVICE_VERSION=1.5.0 ANDROIDX_UI_AUTOMATOR_VERSION=2.3.0 ANDROIDX_WORK_MANAGER_VERSION=2.10.0 diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt index 0ea7f34db..b47bfe702 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt @@ -5,7 +5,7 @@ import kotlinx.datetime.Instant import kotlinx.datetime.toInstant object ConfigInfoFixture { - val UPDATED_AT = "2023-01-15T08:38:45.415Z".toInstant() + val UPDATED_AT = Instant.parse("2023-01-15T08:38:45.415Z") fun new(updatedAt: Instant? = UPDATED_AT) = ConfigInfo(updatedAt) } From fa09ec87cef8b6416900b9bf35630b222cc6b497 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 09:42:57 +0100 Subject: [PATCH 09/31] KotlinX dependency update --- configuration-api-lib/gradle.lockfile | 14 +++++++------- crash-lib/gradle.lockfile | 10 +++++----- gradle.properties | 13 +++---------- preference-api-lib/gradle.lockfile | 10 +++++----- spackle-lib/gradle.lockfile | 10 +++++----- 5 files changed, 25 insertions(+), 32 deletions(-) diff --git a/configuration-api-lib/gradle.lockfile b/configuration-api-lib/gradle.lockfile index 42b2f3193..4d33edbf1 100644 --- a/configuration-api-lib/gradle.lockfile +++ b/configuration-api-lib/gradle.lockfile @@ -40,17 +40,17 @@ org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMeta org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath -org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.7=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.5.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.4.0=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath diff --git a/crash-lib/gradle.lockfile b/crash-lib/gradle.lockfile index e51f42896..80fb957e5 100644 --- a/crash-lib/gradle.lockfile +++ b/crash-lib/gradle.lockfile @@ -53,23 +53,23 @@ org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMeta org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.1=commonTestImplementationCopy -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.2=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.3=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.5.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath diff --git a/gradle.properties b/gradle.properties index f7dcf5656..d48557c7b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -155,11 +155,9 @@ ANDROID_GRADLE_PLUGIN_VERSION=8.9.0 DETEKT_VERSION=1.23.6 DETEKT_COMPOSE_RULES_VERSION=0.3.15 EMULATOR_WTF_GRADLE_PLUGIN_VERSION=0.16.2 -# Handled FIREBASE_CRASHLYTICS_BUILD_TOOLS_VERSION=2.9.9 FLANK_VERSION=23.10.1 FULLADLE_VERSION=0.17.5 -# Handled GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.1 GRADLE_VERSIONS_PLUGIN_VERSION=0.52.0 JGIT_VERSION=6.4.0.202211300538-r @@ -195,25 +193,20 @@ ANDROIDX_UI_AUTOMATOR_VERSION=2.3.0 ANDROIDX_WORK_MANAGER_VERSION=2.10.0 ANDROIDX_BROWSER_VERSION=1.8.0 CORE_LIBRARY_DESUGARING_VERSION=2.1.2 -# Handled FIREBASE_BOM_VERSION_MATCHER=33.1.1 -# Handled GOOGLE_AUTH_LIB_JAVA_VERSION=1.18.0 JACOCO_VERSION=0.8.12 KEYSTONE_VERSION=0.7.10 KOTLIN_VERSION=2.1.10 -KOTLINX_COROUTINES_VERSION=1.8.0 +KOTLINX_COROUTINES_VERSION=1.10.1 KOTLINX_DATETIME_VERSION=0.5.0 -KOTLINX_IMMUTABLE_COLLECTIONS_VERSION=0.3.7 -KOTLINX_SERIALIZABLE_JSON_VERSION=1.6.3 +KOTLINX_IMMUTABLE_COLLECTIONS_VERSION=0.3.8 +KOTLINX_SERIALIZABLE_JSON_VERSION=1.8.0 KOVER_VERSION=0.7.3 LOTTIE_VERSION=6.5.0 MARKDOWN_VERSION=0.7.3 -# Should we handle? MLKIT_SCANNING_VERSION=17.3.0 -# We should handle PLAY_APP_UPDATE_KTX_VERSION=2.1.0 -# We should handle PLAY_PUBLISHER_API_VERSION=v3-rev20231030-2.0.0 TINK_VERSION=1.15.0 ZCASH_ANDROID_WALLET_PLUGINS_VERSION=1.0.0 diff --git a/preference-api-lib/gradle.lockfile b/preference-api-lib/gradle.lockfile index de502fda4..26042db79 100644 --- a/preference-api-lib/gradle.lockfile +++ b/preference-api-lib/gradle.lockfile @@ -48,22 +48,22 @@ org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMeta org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.1=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath diff --git a/spackle-lib/gradle.lockfile b/spackle-lib/gradle.lockfile index 36c1abc1a..1ca4bf5e0 100644 --- a/spackle-lib/gradle.lockfile +++ b/spackle-lib/gradle.lockfile @@ -52,23 +52,23 @@ org.jetbrains.kotlin:kotlin-test:2.1.10=allTestSourceSetsCompileDependenciesMeta org.jetbrains.kotlinx:atomicfu:0.17.3=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:atomicfu:0.20.2=metadataCommonMainCompileClasspath org.jetbrains.kotlinx:atomicfu:0.23.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.1=commonTestImplementationCopy,jvmTestImplementationCopy -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1=commonMainApiCopy,commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.8.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 -org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains:annotations:13.0=commonTestImplementationCopy,jvmTestImplementationCopy,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath From 0a6567745229969fae796be0fb0b24fa3875bfa5 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 10:01:50 +0100 Subject: [PATCH 10/31] Firebase + Google dependencies --- buildscript-gradle.lockfile | 6 +++--- gradle.properties | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index d86380e9d..5ed1fe895 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -61,10 +61,10 @@ com.google.code.gson:gson:2.10.1=classpath com.google.crypto.tink:tink:1.7.0=classpath com.google.dagger:dagger:2.28.3=classpath com.google.errorprone:error_prone_annotations:2.18.0=classpath -com.google.firebase:firebase-crashlytics-buildtools:2.9.9=classpath -com.google.firebase:firebase-crashlytics-gradle:2.9.9=classpath +com.google.firebase:firebase-crashlytics-buildtools:3.0.3=classpath +com.google.firebase:firebase-crashlytics-gradle:3.0.3=classpath com.google.flatbuffers:flatbuffers-java:1.12.0=classpath -com.google.gms:google-services:4.4.1=classpath +com.google.gms:google-services:4.4.2=classpath com.google.guava:failureaccess:1.0.1=classpath com.google.guava:guava:32.0.1-jre=classpath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath diff --git a/gradle.properties b/gradle.properties index d48557c7b..b0349ca99 100644 --- a/gradle.properties +++ b/gradle.properties @@ -155,10 +155,10 @@ ANDROID_GRADLE_PLUGIN_VERSION=8.9.0 DETEKT_VERSION=1.23.6 DETEKT_COMPOSE_RULES_VERSION=0.3.15 EMULATOR_WTF_GRADLE_PLUGIN_VERSION=0.16.2 -FIREBASE_CRASHLYTICS_BUILD_TOOLS_VERSION=2.9.9 +FIREBASE_CRASHLYTICS_BUILD_TOOLS_VERSION=3.0.3 FLANK_VERSION=23.10.1 FULLADLE_VERSION=0.17.5 -GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.1 +GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.2 GRADLE_VERSIONS_PLUGIN_VERSION=0.52.0 JGIT_VERSION=6.4.0.202211300538-r KTLINT_VERSION=1.2.1 @@ -193,7 +193,7 @@ ANDROIDX_UI_AUTOMATOR_VERSION=2.3.0 ANDROIDX_WORK_MANAGER_VERSION=2.10.0 ANDROIDX_BROWSER_VERSION=1.8.0 CORE_LIBRARY_DESUGARING_VERSION=2.1.2 -FIREBASE_BOM_VERSION_MATCHER=33.1.1 +FIREBASE_BOM_VERSION_MATCHER=33.10.0 GOOGLE_AUTH_LIB_JAVA_VERSION=1.18.0 JACOCO_VERSION=0.8.12 KEYSTONE_VERSION=0.7.10 From bc0481e5901caa0802e5ec03dc69b0b3e7a68228 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 10:41:30 +0100 Subject: [PATCH 11/31] Koin 4.0.2 --- gradle.properties | 2 +- .../java/co/electriccoin/zcash/di/KoinActivityViewModel.kt | 2 +- .../src/main/java/co/electriccoin/zcash/di/ViewModelModule.kt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index b0349ca99..3fe1e2037 100644 --- a/gradle.properties +++ b/gradle.properties @@ -162,7 +162,7 @@ GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.2 GRADLE_VERSIONS_PLUGIN_VERSION=0.52.0 JGIT_VERSION=6.4.0.202211300538-r KTLINT_VERSION=1.2.1 -KOIN_VERSION=3.5.6 +KOIN_VERSION=4.0.2 ACCOMPANIST_PERMISSIONS_VERSION=0.34.0 ANDROIDX_ACTIVITY_VERSION=1.10.1 diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/di/KoinActivityViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/di/KoinActivityViewModel.kt index 4faccaa1f..14e7b2d1d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/di/KoinActivityViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/di/KoinActivityViewModel.kt @@ -9,12 +9,12 @@ import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelStoreOwner import androidx.lifecycle.viewmodel.CreationExtras -import org.koin.androidx.compose.defaultExtras import org.koin.androidx.compose.koinViewModel import org.koin.compose.currentKoinScope import org.koin.core.parameter.ParametersDefinition import org.koin.core.qualifier.Qualifier import org.koin.core.scope.Scope +import org.koin.viewmodel.defaultExtras @Suppress("LongParameterList") @Composable diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/di/ViewModelModule.kt b/ui-lib/src/main/java/co/electriccoin/zcash/di/ViewModelModule.kt index bfdd13b9f..faefaa045 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/di/ViewModelModule.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/di/ViewModelModule.kt @@ -45,8 +45,8 @@ import co.electriccoin.zcash.ui.screen.transactionnote.viewmodel.TransactionNote import co.electriccoin.zcash.ui.screen.transactionprogress.TransactionProgressViewModel import co.electriccoin.zcash.ui.screen.warning.viewmodel.StorageCheckViewModel import co.electriccoin.zcash.ui.screen.whatsnew.viewmodel.WhatsNewViewModel -import org.koin.androidx.viewmodel.dsl.viewModel -import org.koin.androidx.viewmodel.dsl.viewModelOf +import org.koin.core.module.dsl.viewModel +import org.koin.core.module.dsl.viewModelOf import org.koin.dsl.module val viewModelModule = From b78f8334f86cd24874b5f90ab2fe8e71c9aa39b6 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 10:41:44 +0100 Subject: [PATCH 12/31] Desugar 2.1.5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 3fe1e2037..adb9b5c32 100644 --- a/gradle.properties +++ b/gradle.properties @@ -192,7 +192,7 @@ ANDROIDX_TEST_SERVICE_VERSION=1.5.0 ANDROIDX_UI_AUTOMATOR_VERSION=2.3.0 ANDROIDX_WORK_MANAGER_VERSION=2.10.0 ANDROIDX_BROWSER_VERSION=1.8.0 -CORE_LIBRARY_DESUGARING_VERSION=2.1.2 +CORE_LIBRARY_DESUGARING_VERSION=2.1.5 FIREBASE_BOM_VERSION_MATCHER=33.10.0 GOOGLE_AUTH_LIB_JAVA_VERSION=1.18.0 JACOCO_VERSION=0.8.12 From 08d2238ba46026a2b227c0423654bc8eb6447293 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 13:26:18 +0100 Subject: [PATCH 13/31] Lottie 6.6.3 + Shimmer 1.3.2 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index adb9b5c32..b2f6afe3e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -203,17 +203,17 @@ KOTLINX_DATETIME_VERSION=0.5.0 KOTLINX_IMMUTABLE_COLLECTIONS_VERSION=0.3.8 KOTLINX_SERIALIZABLE_JSON_VERSION=1.8.0 KOVER_VERSION=0.7.3 -LOTTIE_VERSION=6.5.0 +LOTTIE_VERSION=6.6.3 MARKDOWN_VERSION=0.7.3 MLKIT_SCANNING_VERSION=17.3.0 PLAY_APP_UPDATE_KTX_VERSION=2.1.0 PLAY_PUBLISHER_API_VERSION=v3-rev20231030-2.0.0 +SHIMMER_VERSION=1.3.2 TINK_VERSION=1.15.0 ZCASH_ANDROID_WALLET_PLUGINS_VERSION=1.0.0 ZXING_VERSION=3.5.3 ZIP_321_VERSION = 0.0.6 ZCASH_BIP39_VERSION=1.0.8 -SHIMMER_VERSION=1.2.0 FLEXA_VERSION=1.0.11 From 78d768144511dd1d980abf6d4844a494896e4139 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 13:29:26 +0100 Subject: [PATCH 14/31] Accompanist 0.37.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b2f6afe3e..5f2bc359d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -164,7 +164,7 @@ JGIT_VERSION=6.4.0.202211300538-r KTLINT_VERSION=1.2.1 KOIN_VERSION=4.0.2 -ACCOMPANIST_PERMISSIONS_VERSION=0.34.0 +ACCOMPANIST_PERMISSIONS_VERSION=0.37.2 ANDROIDX_ACTIVITY_VERSION=1.10.1 ANDROIDX_ANNOTATION_VERSION=1.9.1 ANDROIDX_BIOMETRIC_VERSION=1.4.0-alpha02 From f75eef14e6351cea9df1b5a9b3dace32805ff1fa Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 14:31:12 +0100 Subject: [PATCH 15/31] Kover 0.9.1 --- .../secant.kover-conventions.gradle.kts | 25 ++++++++++--------- gradle.properties | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/build-conventions-secant/src/main/kotlin/secant.kover-conventions.gradle.kts b/build-conventions-secant/src/main/kotlin/secant.kover-conventions.gradle.kts index 70dcf0655..629472338 100644 --- a/build-conventions-secant/src/main/kotlin/secant.kover-conventions.gradle.kts +++ b/build-conventions-secant/src/main/kotlin/secant.kover-conventions.gradle.kts @@ -1,19 +1,20 @@ +import kotlinx.kover.gradle.plugin.dsl.KoverProjectExtension + pluginManager.withPlugin("org.jetbrains.kotlinx.kover") { - extensions.findByType()?.apply { + extensions.configure("kover") { if (!project.property("IS_KOTLIN_TEST_COVERAGE_ENABLED").toString().toBoolean()) { disable() } - } - - extensions.findByType()?.apply { - defaults { - html { - onCheck = true - setReportDir(layout.buildDirectory.dir("kover/html")) - } - xml { - onCheck = true - setReportFile(layout.buildDirectory.file("kover/xml/report.xml")) + reports { + total { + html { + onCheck = true + htmlDir = layout.buildDirectory.dir("kover/html") + } + xml { + onCheck = true + xmlFile = layout.buildDirectory.file("kover/xml/report.xml") + } } } } diff --git a/gradle.properties b/gradle.properties index 5f2bc359d..b743c39fd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -202,7 +202,7 @@ KOTLINX_COROUTINES_VERSION=1.10.1 KOTLINX_DATETIME_VERSION=0.5.0 KOTLINX_IMMUTABLE_COLLECTIONS_VERSION=0.3.8 KOTLINX_SERIALIZABLE_JSON_VERSION=1.8.0 -KOVER_VERSION=0.7.3 +KOVER_VERSION=0.9.1 LOTTIE_VERSION=6.6.3 MARKDOWN_VERSION=0.7.3 MLKIT_SCANNING_VERSION=17.3.0 From 7928b6d94acfd1808483cf788a627abf6749c390 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 14:43:39 +0100 Subject: [PATCH 16/31] Tink 1.16.0 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b743c39fd..424261379 100644 --- a/gradle.properties +++ b/gradle.properties @@ -209,7 +209,7 @@ MLKIT_SCANNING_VERSION=17.3.0 PLAY_APP_UPDATE_KTX_VERSION=2.1.0 PLAY_PUBLISHER_API_VERSION=v3-rev20231030-2.0.0 SHIMMER_VERSION=1.3.2 -TINK_VERSION=1.15.0 +TINK_VERSION=1.16.0 ZCASH_ANDROID_WALLET_PLUGINS_VERSION=1.0.0 ZXING_VERSION=3.5.3 ZIP_321_VERSION = 0.0.6 From 43129d22027a19a3a55f7371bb7c1128618ea18e Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 14:46:09 +0100 Subject: [PATCH 17/31] Gradle Wrapper Validation v4 Change the deprecated Gradle Wrapper validation action for the most recent `gradle/actions/wrapper-validation@v4` across our CI scripts. --- .github/workflows/deploy.yml | 4 +--- .github/workflows/pull-request.yml | 4 +--- .github/workflows/release.yaml | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e68099323..1df98b852 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -36,11 +36,9 @@ jobs: - name: Checkout timeout-minutes: 1 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - # Gradle Wrapper validation can be flaky - # https://github.com/gradle/wrapper-validation-action/issues/40 - name: Gradle Wrapper Validation timeout-minutes: 1 - uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 + uses: gradle/actions/wrapper-validation@v4 check_secrets: environment: deployment diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 090fd397b..419218162 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -34,11 +34,9 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 # to fetch all commits - # Gradle Wrapper validation can be flaky - # https://github.com/gradle/wrapper-validation-action/issues/40 - name: Gradle Wrapper Validation timeout-minutes: 1 - uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 + uses: gradle/actions/wrapper-validation@v4 check_firebase_secrets: runs-on: ubuntu-latest diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 610d79b11..bc4a1c733 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -17,11 +17,9 @@ jobs: - name: Checkout timeout-minutes: 1 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - # Gradle Wrapper validation can be flaky - # https://github.com/gradle/wrapper-validation-action/issues/40 - name: Gradle Wrapper Validation timeout-minutes: 1 - uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 + uses: gradle/actions/wrapper-validation@v4 check_secrets: environment: deployment From 31ac7b8c6db264b5d8c532c09fbf5ccd342eeb84 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 14:54:55 +0100 Subject: [PATCH 18/31] Update dependency lock files --- build-conventions-secant/gradle.lockfile | 10 ++++++++-- buildscript-gradle.lockfile | 10 ++++++++-- configuration-api-lib/gradle.lockfile | 8 ++------ crash-lib/gradle.lockfile | 8 ++------ preference-api-lib/gradle.lockfile | 8 ++------ spackle-lib/gradle.lockfile | 8 ++------ 6 files changed, 24 insertions(+), 28 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index 016aa9cb2..94bb5ab02 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -126,9 +126,13 @@ org.bouncycastle:bcutil-jdk18on:1.79=runtimeClasspath org.checkerframework:checker-qual:3.12.0=compileClasspath org.checkerframework:checker-qual:3.33.0=runtimeClasspath org.codehaus.mojo:animal-sniffer-annotations:1.23=runtimeClasspath +org.freemarker:freemarker:2.3.32=runtimeClasspath org.glassfish.jaxb:jaxb-runtime:2.3.2=runtimeClasspath org.glassfish.jaxb:txw2:2.3.2=runtimeClasspath org.jdom:jdom2:2.0.6=runtimeClasspath +org.jetbrains.intellij.deps:coverage-report:1.0.25=runtimeClasspath +org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.765=runtimeClasspath +org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.765=runtimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath @@ -168,9 +172,11 @@ org.jetbrains.kotlin:kotlin-tooling-core:2.1.10=compileClasspath,runtimeClasspat org.jetbrains.kotlin:kotlin-util-io:2.1.10=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-util-klib-metadata:2.1.10=runtimeClasspath org.jetbrains.kotlin:kotlin-util-klib:2.1.10=runtimeClasspath -org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.3=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.9.1=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,runtimeClasspath -org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kover-features-jvm:0.9.1=runtimeClasspath +org.jetbrains.kotlinx:kover-gradle-plugin:0.9.1=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=runtimeClasspath org.jetbrains:annotations:13.0=compileClasspath,compilePluginsBlocksPluginClasspathElements,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain org.jetbrains:annotations:23.0.0=runtimeClasspath org.jetbrains:markdown-jvm:0.7.3=compileClasspath,runtimeClasspath diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 5ed1fe895..573e3062e 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -138,9 +138,13 @@ org.bouncycastle:bcprov-jdk18on:1.79=classpath org.bouncycastle:bcutil-jdk18on:1.79=classpath org.checkerframework:checker-qual:3.33.0=classpath org.codehaus.mojo:animal-sniffer-annotations:1.23=classpath +org.freemarker:freemarker:2.3.32=classpath org.glassfish.jaxb:jaxb-runtime:2.3.2=classpath org.glassfish.jaxb:txw2:2.3.2=classpath org.jdom:jdom2:2.0.6=classpath +org.jetbrains.intellij.deps:coverage-report:1.0.25=classpath +org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.765=classpath +org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.765=classpath org.jetbrains.kotlin:kotlin-bom:2.0.21=classpath org.jetbrains.kotlin:kotlin-build-statistics:2.1.10=classpath org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=classpath @@ -164,9 +168,11 @@ org.jetbrains.kotlin:kotlin-tooling-core:2.1.10=classpath org.jetbrains.kotlin:kotlin-util-io:2.1.10=classpath org.jetbrains.kotlin:kotlin-util-klib-metadata:2.1.10=classpath org.jetbrains.kotlin:kotlin-util-klib:2.1.10=classpath -org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.3=classpath +org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.9.1=classpath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=classpath -org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3=classpath +org.jetbrains.kotlinx:kover-features-jvm:0.9.1=classpath +org.jetbrains.kotlinx:kover-gradle-plugin:0.9.1=classpath +org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=classpath org.jetbrains:annotations:13.0=classpath org.jetbrains:markdown-jvm:0.7.3=classpath org.jetbrains:markdown:0.7.3=classpath diff --git a/configuration-api-lib/gradle.lockfile b/configuration-api-lib/gradle.lockfile index 4d33edbf1..e09ff572e 100644 --- a/configuration-api-lib/gradle.lockfile +++ b/configuration-api-lib/gradle.lockfile @@ -2,11 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. junit:junit:4.13.2=jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.freemarker:freemarker:2.3.32=koverJvmReporter org.hamcrest:hamcrest-core:1.3=jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath @@ -56,7 +52,7 @@ org.jetbrains.kotlinx:kotlinx-datetime:0.4.0=allSourceSetsRuntimeDependenciesMet org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=koverJvmAgent,koverJvmReporter org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath -org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -empty=archives,commonMainIntransitiveDependenciesMetadata,commonMainRuntimeOnlyDependenciesMetadata,commonTestIntransitiveDependenciesMetadata,commonTestRuntimeOnlyDependenciesMetadata,default,jvmMainIntransitiveDependenciesMetadata,jvmMainRuntimeOnlyDependenciesMetadata,jvmTestIntransitiveDependenciesMetadata,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,koverAggregatedSetup,koverExternalArtifacts,testKotlinScriptDef,testKotlinScriptDefExtensions +empty=archives,commonMainIntransitiveDependenciesMetadata,commonMainRuntimeOnlyDependenciesMetadata,commonTestIntransitiveDependenciesMetadata,commonTestRuntimeOnlyDependenciesMetadata,default,jvmMainIntransitiveDependenciesMetadata,jvmMainRuntimeOnlyDependenciesMetadata,jvmTestIntransitiveDependenciesMetadata,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,koverAggregatedSetup,koverExternalArtifacts,koverExternalArtifactsJvm,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/crash-lib/gradle.lockfile b/crash-lib/gradle.lockfile index 80fb957e5..14b32dcab 100644 --- a/crash-lib/gradle.lockfile +++ b/crash-lib/gradle.lockfile @@ -2,11 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. junit:junit:4.13.2=commonTestImplementationCopy,jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.freemarker:freemarker:2.3.32=koverJvmReporter org.hamcrest:hamcrest-core:1.3=commonTestImplementationCopy,jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath @@ -79,7 +75,7 @@ org.jetbrains.kotlinx:kotlinx-datetime:0.4.0=allSourceSetsRuntimeDependenciesMet org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath +org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=koverJvmAgent,koverJvmReporter org.jetbrains:annotations:13.0=commonTestImplementationCopy,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath -org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -empty=archives,archivesCopy,commonMainCompileOnlyCopy,commonMainImplementationCopy,commonMainIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadataCopy,commonMainRuntimeOnlyCopy,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyCopy,commonTestIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadataCopy,commonTestRuntimeOnlyCopy,commonTestRuntimeOnlyDependenciesMetadata,default,defaultCopy,jvmCompileOnlyCopy,jvmMainApiCopy,jvmMainCompileOnlyCopy,jvmMainImplementationCopy,jvmMainIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadataCopy,jvmMainRuntimeOnlyCopy,jvmMainRuntimeOnlyDependenciesMetadata,jvmRuntimeOnlyCopy,jvmSourceArtifactsCopy,jvmTestApiCopy,jvmTestCompileOnlyCopy,jvmTestIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadataCopy,jvmTestRuntimeOnlyCopy,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathCopy,kotlinNativeCompilerPluginClasspath,kotlinNativeCompilerPluginClasspathCopy,kotlinScriptDef,kotlinScriptDefCopy,kotlinScriptDefExtensions,kotlinScriptDefExtensionsCopy,koverAggregatedSetup,koverExternalArtifacts,metadataCommonMainCompileOnlyCopy,metadataCompileOnlyCopy,testKotlinScriptDef,testKotlinScriptDefCopy,testKotlinScriptDefExtensions,testKotlinScriptDefExtensionsCopy +empty=archives,archivesCopy,commonMainCompileOnlyCopy,commonMainImplementationCopy,commonMainIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadataCopy,commonMainRuntimeOnlyCopy,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyCopy,commonTestIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadataCopy,commonTestRuntimeOnlyCopy,commonTestRuntimeOnlyDependenciesMetadata,default,defaultCopy,jvmCompileOnlyCopy,jvmMainApiCopy,jvmMainCompileOnlyCopy,jvmMainImplementationCopy,jvmMainIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadataCopy,jvmMainRuntimeOnlyCopy,jvmMainRuntimeOnlyDependenciesMetadata,jvmRuntimeOnlyCopy,jvmSourceArtifactsCopy,jvmTestApiCopy,jvmTestCompileOnlyCopy,jvmTestIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadataCopy,jvmTestRuntimeOnlyCopy,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathCopy,kotlinNativeCompilerPluginClasspath,kotlinNativeCompilerPluginClasspathCopy,kotlinScriptDef,kotlinScriptDefCopy,kotlinScriptDefExtensions,kotlinScriptDefExtensionsCopy,koverAggregatedSetup,koverExternalArtifacts,koverExternalArtifactsJvm,metadataCommonMainCompileOnlyCopy,metadataCompileOnlyCopy,testKotlinScriptDef,testKotlinScriptDefCopy,testKotlinScriptDefExtensions,testKotlinScriptDefExtensionsCopy diff --git a/preference-api-lib/gradle.lockfile b/preference-api-lib/gradle.lockfile index 26042db79..59ef80db4 100644 --- a/preference-api-lib/gradle.lockfile +++ b/preference-api-lib/gradle.lockfile @@ -2,11 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. junit:junit:4.13.2=jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.freemarker:freemarker:2.3.32=koverJvmReporter org.hamcrest:hamcrest-core:1.3=jvmTestCompileClasspath,jvmTestRuntimeClasspath -org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath @@ -64,7 +60,7 @@ org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementation org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 +org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=koverJvmAgent,koverJvmReporter org.jetbrains:annotations:13.0=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath -org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -empty=allSourceSetsCompileDependenciesMetadataCopy,allSourceSetsRuntimeDependenciesMetadataCopy,archives,archivesCopy,commonMainApiDependenciesMetadataCopy,commonMainCompileOnlyCopy,commonMainImplementationCopy,commonMainIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadataCopy,commonMainRuntimeOnlyCopy,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyCopy,commonTestIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadataCopy,commonTestRuntimeOnlyCopy,commonTestRuntimeOnlyDependenciesMetadata,default,defaultCopy,jvmCompileOnlyCopy,jvmMainApiCopy,jvmMainCompileOnlyCopy,jvmMainImplementationCopy,jvmMainIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadataCopy,jvmMainRuntimeOnlyCopy,jvmMainRuntimeOnlyDependenciesMetadata,jvmRuntimeOnlyCopy,jvmSourceArtifactsCopy,jvmTestCompileOnlyCopy,jvmTestIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadataCopy,jvmTestRuntimeOnlyCopy,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathCopy,kotlinNativeCompilerPluginClasspath,kotlinNativeCompilerPluginClasspathCopy,kotlinScriptDef,kotlinScriptDefCopy,kotlinScriptDefExtensions,kotlinScriptDefExtensionsCopy,koverAggregatedSetup,koverExternalArtifacts,metadataCommonMainCompileOnlyCopy,metadataCompileOnlyCopy,testKotlinScriptDef,testKotlinScriptDefCopy,testKotlinScriptDefExtensions,testKotlinScriptDefExtensionsCopy +empty=allSourceSetsCompileDependenciesMetadataCopy,allSourceSetsRuntimeDependenciesMetadataCopy,archives,archivesCopy,commonMainApiDependenciesMetadataCopy,commonMainCompileOnlyCopy,commonMainImplementationCopy,commonMainIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadataCopy,commonMainRuntimeOnlyCopy,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyCopy,commonTestIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadataCopy,commonTestRuntimeOnlyCopy,commonTestRuntimeOnlyDependenciesMetadata,default,defaultCopy,jvmCompileOnlyCopy,jvmMainApiCopy,jvmMainCompileOnlyCopy,jvmMainImplementationCopy,jvmMainIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadataCopy,jvmMainRuntimeOnlyCopy,jvmMainRuntimeOnlyDependenciesMetadata,jvmRuntimeOnlyCopy,jvmSourceArtifactsCopy,jvmTestCompileOnlyCopy,jvmTestIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadataCopy,jvmTestRuntimeOnlyCopy,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathCopy,kotlinNativeCompilerPluginClasspath,kotlinNativeCompilerPluginClasspathCopy,kotlinScriptDef,kotlinScriptDefCopy,kotlinScriptDefExtensions,kotlinScriptDefExtensionsCopy,koverAggregatedSetup,koverExternalArtifacts,koverExternalArtifactsJvm,metadataCommonMainCompileOnlyCopy,metadataCompileOnlyCopy,testKotlinScriptDef,testKotlinScriptDefCopy,testKotlinScriptDefExtensions,testKotlinScriptDefExtensionsCopy diff --git a/spackle-lib/gradle.lockfile b/spackle-lib/gradle.lockfile index 1ca4bf5e0..5151174ff 100644 --- a/spackle-lib/gradle.lockfile +++ b/spackle-lib/gradle.lockfile @@ -2,11 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. junit:junit:4.13.2=commonTestImplementationCopy,jvmTestCompileClasspath,jvmTestImplementationCopy,jvmTestRuntimeClasspath -org.freemarker:freemarker:2.3.32=koverJvmReporter org.hamcrest:hamcrest-core:1.3=commonTestImplementationCopy,jvmTestCompileClasspath,jvmTestImplementationCopy,jvmTestRuntimeClasspath -org.jetbrains.intellij.deps:coverage-report:1.0.21=koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-agent:1.0.724=koverJvmAgent,koverJvmReporter -org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.724=koverJvmReporter org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.1.10=kotlinBuildToolsApiClasspath @@ -69,7 +65,7 @@ org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.6.2=commonTestImplementation org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy,jvmTestCompileClasspathCopy,jvmTestImplementationCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 +org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=koverJvmAgent,koverJvmReporter org.jetbrains:annotations:13.0=commonTestImplementationCopy,jvmTestImplementationCopy,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCommonMainCompileClasspath -org.jetbrains:annotations:16.0.2=koverJvmReporter org.jetbrains:annotations:23.0.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath -empty=allSourceSetsCompileDependenciesMetadataCopy,allSourceSetsRuntimeDependenciesMetadataCopy,archives,archivesCopy,commonMainCompileOnlyCopy,commonMainImplementationCopy,commonMainIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadataCopy,commonMainRuntimeOnlyCopy,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyCopy,commonTestIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadataCopy,commonTestRuntimeOnlyCopy,commonTestRuntimeOnlyDependenciesMetadata,compileClasspathCopy,default,defaultCopy,jvmApiCopy,jvmApiElementsCopy,jvmCompileClasspathCopy,jvmCompileOnlyCopy,jvmImplementationCopy,jvmMainCompileOnlyCopy,jvmMainImplementationCopy,jvmMainIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadataCopy,jvmMainRuntimeOnlyCopy,jvmMainRuntimeOnlyDependenciesMetadata,jvmRuntimeClasspathCopy,jvmRuntimeElementsCopy,jvmRuntimeOnlyCopy,jvmSourceArtifactsCopy,jvmTestCompileOnlyCopy,jvmTestIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadataCopy,jvmTestRuntimeOnlyCopy,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathCopy,kotlinNativeCompilerPluginClasspath,kotlinNativeCompilerPluginClasspathCopy,kotlinScriptDef,kotlinScriptDefCopy,kotlinScriptDefExtensions,kotlinScriptDefExtensionsCopy,koverAggregatedSetup,koverExternalArtifacts,metadataApiCopy,metadataApiElementsCopy,metadataCommonMainApiCopy,metadataCommonMainCompileClasspathCopy,metadataCommonMainCompileOnlyCopy,metadataCommonMainImplementationCopy,metadataCompileClasspathCopy,metadataCompileOnlyCopy,metadataImplementationCopy,testKotlinScriptDef,testKotlinScriptDefCopy,testKotlinScriptDefExtensions,testKotlinScriptDefExtensionsCopy +empty=allSourceSetsCompileDependenciesMetadataCopy,allSourceSetsRuntimeDependenciesMetadataCopy,archives,archivesCopy,commonMainCompileOnlyCopy,commonMainImplementationCopy,commonMainIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadataCopy,commonMainRuntimeOnlyCopy,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyCopy,commonTestIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadataCopy,commonTestRuntimeOnlyCopy,commonTestRuntimeOnlyDependenciesMetadata,compileClasspathCopy,default,defaultCopy,jvmApiCopy,jvmApiElementsCopy,jvmCompileClasspathCopy,jvmCompileOnlyCopy,jvmImplementationCopy,jvmMainCompileOnlyCopy,jvmMainImplementationCopy,jvmMainIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadataCopy,jvmMainRuntimeOnlyCopy,jvmMainRuntimeOnlyDependenciesMetadata,jvmRuntimeClasspathCopy,jvmRuntimeElementsCopy,jvmRuntimeOnlyCopy,jvmSourceArtifactsCopy,jvmTestCompileOnlyCopy,jvmTestIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadataCopy,jvmTestRuntimeOnlyCopy,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathCopy,kotlinNativeCompilerPluginClasspath,kotlinNativeCompilerPluginClasspathCopy,kotlinScriptDef,kotlinScriptDefCopy,kotlinScriptDefExtensions,kotlinScriptDefExtensionsCopy,koverAggregatedSetup,koverExternalArtifacts,koverExternalArtifactsJvm,metadataApiCopy,metadataApiElementsCopy,metadataCommonMainApiCopy,metadataCommonMainCompileClasspathCopy,metadataCommonMainCompileOnlyCopy,metadataCommonMainImplementationCopy,metadataCompileClasspathCopy,metadataCompileOnlyCopy,metadataImplementationCopy,testKotlinScriptDef,testKotlinScriptDefCopy,testKotlinScriptDefExtensions,testKotlinScriptDefExtensionsCopy From 37ed3841e451fa90ca2511d1b24543a5eebdbab0 Mon Sep 17 00:00:00 2001 From: Honza Date: Tue, 11 Mar 2025 16:24:30 +0100 Subject: [PATCH 19/31] Ktlint 1.5.0 --- .../src/main/kotlin/model/BuildType.kt | 4 +- .../src/main/kotlin/model/Dimensions.kt | 8 +- .../src/main/kotlin/publish/ChangelogEntry.kt | 3 +- .../main/kotlin/publish/ChangelogParser.kt | 33 +- .../main/kotlin/co/electriccoin/zcash/Git.kt | 5 +- .../api/MergingConfigurationProvider.kt | 23 +- .../configuration/model/entry/ConfigKey.kt | 4 +- .../exception/ConfigurationParseException.kt | 5 +- .../api/MergingConfigurationProviderTest.kt | 12 +- .../configuration/test/MockConfiguration.kt | 4 +- .../intent/IntentConfigurationReceiver.kt | 5 +- .../internal/ListCrashReportersImpl.kt | 5 +- .../crash/android/AndroidExceptionPath.kt | 3 +- .../crash/android/GlobalCrashReporter.kt | 3 +- .../internal/local/LocalCrashReporter.kt | 8 +- .../internal/firebase/FirebaseAppCache.kt | 4 +- .../firebase/FirebaseCrashReporter.kt | 4 +- .../internal/firebase/FirebaseAppCache.kt | 4 +- .../firebase/FirebaseCrashReporter.kt | 4 +- .../internal/firebase/FirebaseAppCache.kt | 4 +- .../firebase/FirebaseCrashReporter.kt | 4 +- .../internal/firebase/FirebaseAppCache.kt | 4 +- .../firebase/FirebaseCrashReporter.kt | 4 +- gradle.properties | 2 +- .../model/entry/PreferenceDefault.kt | 3 +- .../preference/model/entry/PreferenceKey.kt | 4 +- .../preference/AndroidPreferenceProvider.kt | 8 +- .../preference/EncryptedPreferenceProvider.kt | 9 +- .../preference/StandardPreferenceProvider.kt | 9 +- .../z/ecc/sdk/extension/PercentDecimalExt.kt | 5 +- .../z/ecc/sdk/model/SeedPhraseValidation.kt | 4 +- .../java/cash/z/ecc/sdk/model/ZecRequest.kt | 10 +- .../zcash/spackle/AndroidApiVersion.kt | 8 +- .../spackle/CoroutineBroadcastReceiver.kt | 4 +- .../zcash/spackle/StrictModeCompat.kt | 62 ++-- .../AbstractProcessNameContentProvider.kt | 20 +- .../spackle/process/ProcessNameCompat.kt | 5 +- .../zcash/spackle/LazyWithArgument.kt | 4 +- .../zcash/spackle/SuspendingLazy.kt | 4 +- .../electriccoin/zcash/spackle/model/Index.kt | 4 +- .../zcash/spackle/model/Progress.kt | 5 +- .../zcash/test/UiTestPrerequisites.kt | 6 +- .../zcash/test/ZcashUiTestRunner.kt | 3 +- tools/.editorconfig | 3 +- .../zcash/ui/design/component/Balance.kt | 26 +- .../zcash/ui/design/component/Checkbox.kt | 3 +- .../zcash/ui/design/component/Chip.kt | 6 +- .../zcash/ui/design/component/Override.kt | 5 +- .../zcash/ui/design/component/PagerTabs.kt | 3 +- .../ui/design/component/ScreenBrightness.kt | 5 +- .../ui/design/component/SwitchWithLabel.kt | 3 +- .../zcash/ui/design/component/TextField.kt | 6 +- .../ui/design/component/TextFieldColorsExt.kt | 5 +- .../ui/design/component/ZashiMainTopAppBar.kt | 3 +- .../zcash/ui/design/component/ZashiQr.kt | 3 +- .../ui/design/component/ZashiRadioButton.kt | 3 +- .../component/listitem/ZashiListItem.kt | 8 +- .../util/AndroidQrCodeImageGenerator.kt | 3 +- .../zcash/ui/design/util/ImageResource.kt | 4 +- .../zcash/ui/design/util/ScreenHeight.kt | 10 +- .../zcash/ui/design/util/StringResource.kt | 54 ++- .../test/screen/scan/view/ScanViewTest.kt | 17 +- .../zcash/ui/common/ScreenBrightnessTest.kt | 4 +- .../zcash/ui/common/ScreenSecurityTest.kt | 4 +- .../zcash/ui/common/ScreenTimeoutTest.kt | 4 +- .../configuration/ConfigurationEntriesTest.kt | 3 +- .../preference/StandardPreferenceKeysTest.kt | 3 +- .../ui/screen/about/view/AboutViewTest.kt | 14 +- .../ui/screen/account/view/AccountViewTest.kt | 3 +- .../screen/balances/view/BalancesViewTest.kt | 3 +- .../view/ExportPrivateDataViewTestSetup.kt | 4 +- .../onboarding/view/OnboardingViewTest.kt | 39 +-- .../ui/screen/receive/view/ReceiveViewTest.kt | 22 +- .../view/RestoreViewSecuredScreenTest.kt | 4 +- .../ui/screen/restore/view/RestoreViewTest.kt | 203 ++++++----- .../ui/screen/scan/view/ScanViewBasicTest.kt | 13 +- .../view/SecurityWarningViewTestSetup.kt | 4 +- .../screen/settings/view/SettingsViewTest.kt | 85 ++--- .../ui/screen/scan/util/QrCodeAnalyzerImpl.kt | 21 +- .../zcash/global/WalletCoordinator.kt | 5 +- .../zcash/ui/BiometricActivity.kt | 6 +- .../co/electriccoin/zcash/ui/Navigation.kt | 6 +- .../electriccoin/zcash/ui/NavigationRouter.kt | 16 +- .../ui/common/datasource/AccountDataSource.kt | 18 +- .../datasource/LocalAddressBookDataSource.kt | 19 +- .../common/datasource/MetadataDataSource.kt | 21 +- .../common/datasource/ProposalDataSource.kt | 15 +- .../common/mapper/TransactionHistoryMapper.kt | 5 +- .../ui/common/model/FastestServersState.kt | 5 +- .../zcash/ui/common/model/SubmitResult.kt | 20 +- .../zcash/ui/common/model/ValidContactName.kt | 4 +- .../zcash/ui/common/model/VersionInfo.kt | 9 +- .../provider/AddressBookKeyStorageProvider.kt | 4 +- .../ui/common/provider/AddressBookProvider.kt | 10 +- .../provider/AddressBookStorageProvider.kt | 10 +- .../provider/ApplicationStateProvider.kt | 4 +- .../provider/GetDefaultServersProvider.kt | 4 +- .../common/provider/GetVersionInfoProvider.kt | 4 +- .../provider/GetZcashCurrencyProvider.kt | 4 +- .../provider/MetadataKeyStorageProvider.kt | 26 +- .../ui/common/provider/MetadataProvider.kt | 5 +- .../provider/MetadataStorageProvider.kt | 5 +- .../RestoreTimestampStorageProvider.kt | 4 +- .../provider/SelectedAccountUUIDProvider.kt | 4 +- .../common/provider/SynchronizerProvider.kt | 7 +- .../repository/AddressBookRepository.kt | 13 +- .../common/repository/BiometricRepository.kt | 12 +- .../repository/ConfigurationRepository.kt | 6 +- .../repository/ExchangeRateRepository.kt | 37 +- .../ui/common/repository/FlexaRepository.kt | 3 +- .../repository/KeystoneProposalRepository.kt | 4 +- .../common/repository/MetadataRepository.kt | 12 +- .../repository/TransactionRepository.kt | 317 +++++++++--------- .../ui/common/repository/WalletRepository.kt | 39 +-- .../ui/common/serialization/BaseSerializer.kt | 17 +- .../common/serialization/InstantSerializer.kt | 4 +- .../addressbook/AddressBookEncryptor.kt | 8 +- .../addressbook/AddressBookKey.kt | 4 +- .../addressbook/AddressBookSerializer.kt | 5 +- .../serialization/metada/MetadaEncryptor.kt | 13 +- .../serialization/metada/MetadataKey.kt | 16 +- .../metada/MetadataSerializer.kt | 4 +- ...reateKeystoneProposalPCZTEncoderUseCase.kt | 4 +- .../ui/common/usecase/ExportTaxUseCase.kt | 10 +- .../GetCurrentFilteredTransactionsUseCase.kt | 68 ++-- .../usecase/GetCurrentTransactionsUseCase.kt | 6 +- .../ui/common/usecase/GetProposalUseCase.kt | 5 +- .../GetSelectedWalletAccountUseCase.kt | 4 +- .../GetTransactionDetailByIdUseCase.kt | 7 +- .../common/usecase/GetZashiAccountUseCase.kt | 4 +- .../usecase/ObserveFastestServersUseCase.kt | 4 +- .../usecase/ObserveOnAccountChangedUseCase.kt | 4 +- .../common/usecase/ObserveProposalUseCase.kt | 3 +- .../usecase/ObserveSelectedEndpointUseCase.kt | 3 +- .../ObserveSelectedWalletAccountUseCase.kt | 4 +- .../usecase/ObserveWalletAccountsUseCase.kt | 4 +- .../usecase/ObserveZashiAccountUseCase.kt | 4 +- .../usecase/ParseKeystonePCZTUseCase.kt | 5 +- .../ParseKeystoneSignInRequestUseCase.kt | 4 +- .../ParseKeystoneUrToZashiAccountsUseCase.kt | 5 +- .../common/usecase/PersistEndpointUseCase.kt | 7 +- .../ui/common/usecase/SendEmailUseCase.kt | 35 +- .../common/usecase/SendSupportEmailUseCase.kt | 41 +-- .../ui/common/usecase/ShareImageUseCase.kt | 15 +- .../usecase/ValidateContactAddressUseCase.kt | 8 +- .../usecase/ValidateContactNameUseCase.kt | 8 +- .../Zip321ParseUriValidationUseCase.kt | 8 +- .../viewmodel/AuthenticationViewModel.kt | 19 +- .../ui/common/viewmodel/WalletViewModel.kt | 29 +- .../zcash/ui/common/wallet/RefreshLock.kt | 3 +- .../zcash/ui/common/wallet/StaleLock.kt | 3 +- .../zcash/ui/fixture/ConfigInfoFixture.kt | 1 - .../zcash/ui/screen/ExternalUrl.kt | 4 +- .../ui/screen/about/util/WebBrowserUtil.kt | 3 +- .../zcash/ui/screen/about/view/AboutView.kt | 3 +- .../zcash/ui/screen/account/AndroidAccount.kt | 15 +- .../accountlist/model/AccountListState.kt | 8 +- .../viewmodel/AccountListViewModel.kt | 100 +++--- .../addressbook/model/AddressBookState.kt | 4 +- .../viewmodel/AddressBookViewModel.kt | 24 +- .../viewmodel/SelectRecipientViewModel.kt | 92 ++--- .../AndroidAdvancedSettings.kt | 15 +- .../viewmodel/AdvancedSettingsViewModel.kt | 6 +- .../authentication/AndroidAuthentication.kt | 30 +- .../authentication/view/WelcomeAnimation.kt | 3 +- .../ui/screen/balances/AndroidBalances.kt | 20 +- .../balances/model/WalletDisplayValues.kt | 17 +- .../screen/chooseserver/ChooseServerState.kt | 5 +- .../screen/chooseserver/ChooseServerView.kt | 5 +- .../chooseserver/ChooseServerViewModel.kt | 37 +- .../contact/viewmodel/AddContactViewModel.kt | 68 ++-- .../viewmodel/UpdateContactViewModel.kt | 8 +- .../widget/StyledExchangeRateOptIn.kt | 4 +- .../ui/screen/feedback/view/FeedbackView.kt | 6 +- .../feedback/viewmodel/FeedbackViewModel.kt | 35 +- .../zcash/ui/screen/home/AndroidHome.kt | 4 +- .../zcash/ui/screen/home/view/HomeView.kt | 3 +- .../integrations/AndroidIntegrations.kt | 6 +- .../viewmodel/IntegrationsViewModel.kt | 27 +- .../qrcode/viewmodel/QrCodeViewModel.kt | 61 ++-- .../ui/screen/receive/view/ReceiveView.kt | 3 +- .../zcash/ui/screen/request/model/OnAmount.kt | 8 +- .../zcash/ui/screen/request/model/Request.kt | 13 +- .../ui/screen/request/model/RequestState.kt | 4 +- .../request/viewmodel/RequestViewModel.kt | 19 +- .../ui/screen/restore/model/ParseResult.kt | 24 +- .../ui/screen/restore/state/RestoreState.kt | 4 +- .../zcash/ui/screen/restore/state/WordList.kt | 4 +- .../ui/screen/restore/view/RestoreView.kt | 10 +- .../restore/viewmodel/RestoreViewModel.kt | 9 +- .../ReviewTransactionViewModel.kt | 6 +- .../ui/screen/scan/model/ScanResultState.kt | 8 +- .../scan/util/ImageUriToQrCodeConverter.kt | 10 +- .../zcash/ui/screen/scan/view/ScanView.kt | 44 +-- .../scankeystone/view/ScanKeystoneView.kt | 44 +-- .../zcash/ui/screen/seed/view/SeedView.kt | 8 +- .../ui/screen/seed/viewmodel/SeedViewModel.kt | 9 +- .../SelectKeystoneAccount.kt | 4 +- .../SelectKeystoneAccountViewModel.kt | 5 +- .../zcash/ui/screen/send/SendViewModel.kt | 104 +++--- .../zcash/ui/screen/send/ext/MemoExt.kt | 4 +- .../zcash/ui/screen/send/model/AmountState.kt | 5 +- .../zcash/ui/screen/send/model/SendStage.kt | 4 +- .../viewmodel/CreateTransactionsViewModel.kt | 15 +- .../viewmodel/ScreenBrightnessViewModel.kt | 4 +- .../SignKeystoneTransactionViewModel.kt | 3 +- .../ui/screen/support/model/ConfigInfo.kt | 4 +- .../ui/screen/support/model/CrashInfo.kt | 6 +- .../ui/screen/support/model/DeviceInfo.kt | 6 +- .../support/model/OperatingSystemInfo.kt | 5 +- .../ui/screen/support/model/PermissionInfo.kt | 14 +- .../support/viewmodel/SupportViewModel.kt | 3 +- .../TransactionDetailView.kt | 5 +- .../TransactionDetailViewModel.kt | 75 +++-- .../infoitems/TransactionDetailInfoMemo.kt | 3 +- .../viewmodel/TransactionFiltersViewModel.kt | 121 +++---- .../screen/transactionhistory/Transaction.kt | 3 +- .../TransactionHistoryViewModel.kt | 54 +-- .../screen/transactionnote/TransactionNote.kt | 4 +- .../TransactionProgressView.kt | 3 +- .../ui/screen/whatsnew/model/WhatsNewState.kt | 5 +- .../ui/screen/whatsnew/view/WhatsNewView.kt | 7 +- .../whatsnew/viewmodel/WhatsNewViewModel.kt | 4 +- .../electriccoin/zcash/ui/util/EmailUtil.kt | 5 +- .../zcash/ui/util/FileShareUtil.kt | 24 +- .../co/electriccoin/zcash/ui/util/FlowExt.kt | 5 +- .../zcash/ui/util/SettingsUtil.kt | 10 +- .../co/electriccoin/zcash/work/SyncWorker.kt | 23 +- .../ui/screen/scan/util/QrCodeAnalyzerImpl.kt | 12 +- .../zcash/ui/screenshot/ScreenshotTest.kt | 231 +++++++------ .../zcash/ui/screenshot/ZcashUiTestRunner.kt | 4 +- 231 files changed, 1971 insertions(+), 1671 deletions(-) diff --git a/build-conventions-secant/src/main/kotlin/model/BuildType.kt b/build-conventions-secant/src/main/kotlin/model/BuildType.kt index aede8250e..77ae439a0 100644 --- a/build-conventions-secant/src/main/kotlin/model/BuildType.kt +++ b/build-conventions-secant/src/main/kotlin/model/BuildType.kt @@ -1,6 +1,8 @@ package model -enum class BuildType(val value: String) { +enum class BuildType( + val value: String +) { DEBUG("debug"), RELEASE("release"), BENCHMARK("benchmark") diff --git a/build-conventions-secant/src/main/kotlin/model/Dimensions.kt b/build-conventions-secant/src/main/kotlin/model/Dimensions.kt index f689a4101..647d2310d 100644 --- a/build-conventions-secant/src/main/kotlin/model/Dimensions.kt +++ b/build-conventions-secant/src/main/kotlin/model/Dimensions.kt @@ -1,6 +1,8 @@ package model -enum class NetworkDimension(val value: String) { +enum class NetworkDimension( + val value: String +) { MAINNET("zcashmainnet"), TESTNET("zcashtestnet"); @@ -9,7 +11,9 @@ enum class NetworkDimension(val value: String) { } } -enum class DistributionDimension(val value: String) { +enum class DistributionDimension( + val value: String +) { STORE("store"), FOSS("foss"); diff --git a/build-conventions-secant/src/main/kotlin/publish/ChangelogEntry.kt b/build-conventions-secant/src/main/kotlin/publish/ChangelogEntry.kt index b52c193fe..549aba987 100644 --- a/build-conventions-secant/src/main/kotlin/publish/ChangelogEntry.kt +++ b/build-conventions-secant/src/main/kotlin/publish/ChangelogEntry.kt @@ -47,7 +47,8 @@ data class ChangelogEntry( GsonBuilder() .serializeNulls() .create() - .toJson(this).replace("\"", "\\\"") + .toJson(this) + .replace("\"", "\\\"") } data class ChangelogEntrySection( diff --git a/build-conventions-secant/src/main/kotlin/publish/ChangelogParser.kt b/build-conventions-secant/src/main/kotlin/publish/ChangelogParser.kt index d670f11be..501d80b1a 100644 --- a/build-conventions-secant/src/main/kotlin/publish/ChangelogParser.kt +++ b/build-conventions-secant/src/main/kotlin/publish/ChangelogParser.kt @@ -65,7 +65,8 @@ object ChangelogParser { log("Parser: index from: $fromIndex") val toIndex = - nodes.subList(fromIndex + 1, nodes.size) + nodes + .subList(fromIndex + 1, nodes.size) .indexOfFirst { findNodeByPrefix(it) } .let { // Applies to the last or the only one entry @@ -117,24 +118,22 @@ object ChangelogParser { subNode.startsWith("### ${titleByLanguage(TitleType.FIXED, languageTag)}") || subNode.startsWith("### ${titleByLanguage(TitleType.REMOVED, languageTag)}") - private fun List.getVersionPart(versionNameFallback: String): String { - return if (this.contains("## [Unreleased]")) { + private fun List.getVersionPart(versionNameFallback: String): String = + if (this.contains("## [Unreleased]")) { versionNameFallback } else { // Parse just version name omitting version code as we currently don't need it in the UI this[0].split("[")[1].split(" ")[0].trim() } - } private val dateFormatter = SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) - private fun List.getDatePart(): String { - return if (this.contains("## [Unreleased]")) { + private fun List.getDatePart(): String = + if (this.contains("## [Unreleased]")) { dateFormatter.format(Date()) } else { this[0].split("- ")[1].trim() } - } private fun List.getNodePart(title: String): ChangelogEntrySection? { val fromContent = "### $title" @@ -160,7 +159,8 @@ object ChangelogParser { // To remove hard line wrap from AS .map { it.replace("\n ", "") } .joinToString(prefix = "\n", separator = "\n") - .takeIf { it.isNotBlank() }?.let { + .takeIf { it.isNotBlank() } + ?.let { ChangelogEntrySection(title = title, content = it) } } @@ -168,8 +168,8 @@ object ChangelogParser { private fun titleByLanguage( type: TitleType, languageTag: LanguageTag - ): String { - return when (type) { + ): String = + when (type) { TitleType.ADDED -> when (languageTag) { is LanguageTag.English -> ADDED_PART_EN @@ -191,13 +191,18 @@ object ChangelogParser { is LanguageTag.Spanish -> REMOVED_PART_ES } } - } } -sealed class LanguageTag(open val tag: String) { - data class English(override val tag: String = ENGLISH_TAG) : LanguageTag(tag) +sealed class LanguageTag( + open val tag: String +) { + data class English( + override val tag: String = ENGLISH_TAG + ) : LanguageTag(tag) - data class Spanish(override val tag: String = SPANISH_TAG) : LanguageTag(tag) + data class Spanish( + override val tag: String = SPANISH_TAG + ) : LanguageTag(tag) } private enum class TitleType { diff --git a/buildSrc/src/main/kotlin/co/electriccoin/zcash/Git.kt b/buildSrc/src/main/kotlin/co/electriccoin/zcash/Git.kt index bc3e4fefa..2d9ef3a75 100644 --- a/buildSrc/src/main/kotlin/co/electriccoin/zcash/Git.kt +++ b/buildSrc/src/main/kotlin/co/electriccoin/zcash/Git.kt @@ -23,4 +23,7 @@ object Git { } } -data class GitInfo(val sha: String, val commitCount: Int) +data class GitInfo( + val sha: String, + val commitCount: Int +) diff --git a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt index a2006e822..82e527585 100644 --- a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt +++ b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt @@ -13,32 +13,35 @@ import kotlinx.datetime.Instant class MergingConfigurationProvider( private val configurationProviders: PersistentList ) : ConfigurationProvider { - override fun peekConfiguration(): Configuration { - return MergingConfiguration(configurationProviders.map { it.peekConfiguration() }.toPersistentList()) - } + override fun peekConfiguration(): Configuration = + MergingConfiguration( + configurationProviders + .map { + it.peekConfiguration() + }.toPersistentList() + ) - override fun getConfigurationFlow(): Flow { - return if (configurationProviders.isEmpty()) { + override fun getConfigurationFlow(): Flow = + if (configurationProviders.isEmpty()) { flowOf(MergingConfiguration(persistentListOf())) } else { combine(configurationProviders.map { it.getConfigurationFlow() }) { configurations -> MergingConfiguration(configurations.toList().toPersistentList()) } } - } override fun hintToRefresh() { configurationProviders.forEach { it.hintToRefresh() } } } -private data class MergingConfiguration(private val configurations: PersistentList) : Configuration { +private data class MergingConfiguration( + private val configurations: PersistentList +) : Configuration { override val updatedAt: Instant? get() = configurations.mapNotNull { it.updatedAt }.maxOrNull() - override fun hasKey(key: ConfigKey): Boolean { - return null != configurations.firstWithKey(key) - } + override fun hasKey(key: ConfigKey): Boolean = null != configurations.firstWithKey(key) // TODO [#1373]: Catch and log Configuration Key Coercion Failures // TODO [#1373]: https://github.com/Electric-Coin-Company/zashi-android/issues/1373 diff --git a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/entry/ConfigKey.kt b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/entry/ConfigKey.kt index 3c755aa22..36f853fbd 100644 --- a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/entry/ConfigKey.kt +++ b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/entry/ConfigKey.kt @@ -7,7 +7,9 @@ package co.electriccoin.zcash.configuration.model.entry * least common denominator with some reasonable limits on what the keys can contain. */ @JvmInline -value class ConfigKey(val key: String) { +value class ConfigKey( + val key: String +) { init { requireKeyConstraints(key) } diff --git a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/exception/ConfigurationParseException.kt b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/exception/ConfigurationParseException.kt index 830598997..064fcc549 100644 --- a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/exception/ConfigurationParseException.kt +++ b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/model/exception/ConfigurationParseException.kt @@ -4,4 +4,7 @@ package co.electriccoin.zcash.configuration.model.exception * Exception that may occur when parsing a value from the remote configuration. This could mean that someone made an * error in the remote config console. */ -class ConfigurationParseException(message: String, cause: Throwable?) : IllegalArgumentException(message, cause) +class ConfigurationParseException( + message: String, + cause: Throwable? +) : IllegalArgumentException(message, cause) diff --git a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt index 2153f4693..0f4c0700f 100644 --- a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt +++ b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt @@ -109,14 +109,12 @@ class MergingConfigurationProviderTest { } } -private class MockConfigurationProvider(private val configuration: Configuration) : ConfigurationProvider { - override fun peekConfiguration(): Configuration { - return configuration - } +private class MockConfigurationProvider( + private val configuration: Configuration +) : ConfigurationProvider { + override fun peekConfiguration(): Configuration = configuration - override fun getConfigurationFlow(): Flow { - return flowOf(configuration) - } + override fun getConfigurationFlow(): Flow = flowOf(configuration) override fun hintToRefresh() { // no-op diff --git a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/test/MockConfiguration.kt b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/test/MockConfiguration.kt index 870546baa..54f8afa9c 100644 --- a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/test/MockConfiguration.kt +++ b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/test/MockConfiguration.kt @@ -11,7 +11,9 @@ import kotlinx.datetime.Instant * mutate the configuration by mutating the original map. The mapping is stored in a val field * though, making the initial mapping thread-safe. */ -class MockConfiguration(private val configurationMapping: Map = emptyMap()) : Configuration { +class MockConfiguration( + private val configurationMapping: Map = emptyMap() +) : Configuration { override val updatedAt: Instant? = null @Throws(ConfigurationParseException::class) diff --git a/configuration-impl-android-lib/src/main/java/co/electriccoin/zcash/configuration/internal/intent/IntentConfigurationReceiver.kt b/configuration-impl-android-lib/src/main/java/co/electriccoin/zcash/configuration/internal/intent/IntentConfigurationReceiver.kt index 153e6d6db..46a0c86d5 100644 --- a/configuration-impl-android-lib/src/main/java/co/electriccoin/zcash/configuration/internal/intent/IntentConfigurationReceiver.kt +++ b/configuration-impl-android-lib/src/main/java/co/electriccoin/zcash/configuration/internal/intent/IntentConfigurationReceiver.kt @@ -34,8 +34,8 @@ class IntentConfigurationReceiver : BroadcastReceiver() { } // https://issuetracker.google.com/issues/36927401 -private fun Intent.defuse(): Intent? { - return try { +private fun Intent.defuse(): Intent? = + try { extras?.containsKey(null) this } catch ( @@ -43,4 +43,3 @@ private fun Intent.defuse(): Intent? { ) { null } -} diff --git a/crash-android-lib/src/foss/kotlin/co/electriccoin/zcash/crash/android/internal/ListCrashReportersImpl.kt b/crash-android-lib/src/foss/kotlin/co/electriccoin/zcash/crash/android/internal/ListCrashReportersImpl.kt index 5894076db..fd133a143 100644 --- a/crash-android-lib/src/foss/kotlin/co/electriccoin/zcash/crash/android/internal/ListCrashReportersImpl.kt +++ b/crash-android-lib/src/foss/kotlin/co/electriccoin/zcash/crash/android/internal/ListCrashReportersImpl.kt @@ -4,9 +4,8 @@ import android.content.Context import co.electriccoin.zcash.crash.android.internal.local.LocalCrashReporter class ListCrashReportersImpl : ListCrashReporters { - override fun provideReporters(context: Context): List { - return listOfNotNull( + override fun provideReporters(context: Context): List = + listOfNotNull( LocalCrashReporter.getInstance(context), ) - } } diff --git a/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/AndroidExceptionPath.kt b/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/AndroidExceptionPath.kt index b4b28adf6..83269ed5e 100644 --- a/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/AndroidExceptionPath.kt +++ b/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/AndroidExceptionPath.kt @@ -10,7 +10,8 @@ import java.io.File @Suppress("ReturnCount") suspend fun ExceptionPath.getExceptionDirectory(context: Context): File? { val exceptionDirectory = - context.getExternalFilesDirSuspend(null) + context + .getExternalFilesDirSuspend(null) ?.let { File(File(it, ExceptionPath.LOG_DIRECTORY_NAME), ExceptionPath.EXCEPTION_DIRECTORY_NAME) } if (null == exceptionDirectory) { diff --git a/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/GlobalCrashReporter.kt b/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/GlobalCrashReporter.kt index 60ab4b025..913889b9a 100644 --- a/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/GlobalCrashReporter.kt +++ b/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/GlobalCrashReporter.kt @@ -64,5 +64,6 @@ object GlobalCrashReporter { } private fun isCrashProcess(context: Context) = - ProcessNameCompat.getProcessName(context) + ProcessNameCompat + .getProcessName(context) .endsWith(GlobalCrashReporter.CRASH_PROCESS_NAME_SUFFIX) diff --git a/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/internal/local/LocalCrashReporter.kt b/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/internal/local/LocalCrashReporter.kt index 47aa31e70..9c3bb5aa5 100644 --- a/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/internal/local/LocalCrashReporter.kt +++ b/crash-android-lib/src/main/kotlin/co/electriccoin/zcash/crash/android/internal/local/LocalCrashReporter.kt @@ -13,7 +13,9 @@ import kotlinx.coroutines.launch /** * Registers an exception handler to write exceptions to disk. */ -internal class LocalCrashReporter(private val applicationContext: Context) : CrashReporter { +internal class LocalCrashReporter( + private val applicationContext: Context +) : CrashReporter { private val crashReportingScope = CoroutineScope(SupervisorJob() + Dispatchers.Main) @AnyThread @@ -41,8 +43,6 @@ internal class LocalCrashReporter(private val applicationContext: Context) : Cra LocalCrashReporter(it.applicationContext) } - fun getInstance(context: Context): CrashReporter { - return lazyWithArgument.getInstance(context) - } + fun getInstance(context: Context): CrashReporter = lazyWithArgument.getInstance(context) } } diff --git a/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt b/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt index 3862aa435..fc23f8e3d 100644 --- a/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt +++ b/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt @@ -36,4 +36,6 @@ private suspend fun getFirebaseAppContainer(context: Context): FirebaseAppContai FirebaseAppContainer(firebaseApp) } -private class FirebaseAppContainer(val firebaseApp: FirebaseApp?) +private class FirebaseAppContainer( + val firebaseApp: FirebaseApp? +) diff --git a/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt b/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt index 19b9d16a5..99e13543e 100644 --- a/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt +++ b/crash-android-lib/src/zcashmainnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt @@ -121,9 +121,7 @@ private class FirebaseCrashReporterImpl( } } - suspend fun getInstance(context: Context): CrashReporter? { - return lazyWithArgument.getInstance(context) - } + suspend fun getInstance(context: Context): CrashReporter? = lazyWithArgument.getInstance(context) } } diff --git a/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt b/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt index 3862aa435..fc23f8e3d 100644 --- a/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt +++ b/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt @@ -36,4 +36,6 @@ private suspend fun getFirebaseAppContainer(context: Context): FirebaseAppContai FirebaseAppContainer(firebaseApp) } -private class FirebaseAppContainer(val firebaseApp: FirebaseApp?) +private class FirebaseAppContainer( + val firebaseApp: FirebaseApp? +) diff --git a/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt b/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt index 19b9d16a5..99e13543e 100644 --- a/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt +++ b/crash-android-lib/src/zcashmainnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt @@ -121,9 +121,7 @@ private class FirebaseCrashReporterImpl( } } - suspend fun getInstance(context: Context): CrashReporter? { - return lazyWithArgument.getInstance(context) - } + suspend fun getInstance(context: Context): CrashReporter? = lazyWithArgument.getInstance(context) } } diff --git a/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt b/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt index 3862aa435..fc23f8e3d 100644 --- a/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt +++ b/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt @@ -36,4 +36,6 @@ private suspend fun getFirebaseAppContainer(context: Context): FirebaseAppContai FirebaseAppContainer(firebaseApp) } -private class FirebaseAppContainer(val firebaseApp: FirebaseApp?) +private class FirebaseAppContainer( + val firebaseApp: FirebaseApp? +) diff --git a/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt b/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt index 19b9d16a5..99e13543e 100644 --- a/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt +++ b/crash-android-lib/src/zcashtestnetStoreDebug/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt @@ -121,9 +121,7 @@ private class FirebaseCrashReporterImpl( } } - suspend fun getInstance(context: Context): CrashReporter? { - return lazyWithArgument.getInstance(context) - } + suspend fun getInstance(context: Context): CrashReporter? = lazyWithArgument.getInstance(context) } } diff --git a/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt b/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt index 3862aa435..fc23f8e3d 100644 --- a/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt +++ b/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseAppCache.kt @@ -36,4 +36,6 @@ private suspend fun getFirebaseAppContainer(context: Context): FirebaseAppContai FirebaseAppContainer(firebaseApp) } -private class FirebaseAppContainer(val firebaseApp: FirebaseApp?) +private class FirebaseAppContainer( + val firebaseApp: FirebaseApp? +) diff --git a/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt b/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt index 19b9d16a5..99e13543e 100644 --- a/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt +++ b/crash-android-lib/src/zcashtestnetStoreRelease/kotlin/co/electriccoin/zcash/crash/android/internal/firebase/FirebaseCrashReporter.kt @@ -121,9 +121,7 @@ private class FirebaseCrashReporterImpl( } } - suspend fun getInstance(context: Context): CrashReporter? { - return lazyWithArgument.getInstance(context) - } + suspend fun getInstance(context: Context): CrashReporter? = lazyWithArgument.getInstance(context) } } diff --git a/gradle.properties b/gradle.properties index 424261379..df081937c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -161,7 +161,7 @@ FULLADLE_VERSION=0.17.5 GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.2 GRADLE_VERSIONS_PLUGIN_VERSION=0.52.0 JGIT_VERSION=6.4.0.202211300538-r -KTLINT_VERSION=1.2.1 +KTLINT_VERSION=1.5.0 KOIN_VERSION=4.0.2 ACCOMPANIST_PERMISSIONS_VERSION=0.37.2 diff --git a/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceDefault.kt b/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceDefault.kt index 9b72a965e..1ae040794 100644 --- a/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceDefault.kt +++ b/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceDefault.kt @@ -45,7 +45,8 @@ interface PreferenceDefault { * indicating what was stored in the preferences, in addition to subsequent updates. */ fun observe(preferenceProvider: PreferenceProvider): Flow = - preferenceProvider.observe(key) + preferenceProvider + .observe(key) .map { getValue(preferenceProvider) } .distinctUntilChanged() } diff --git a/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceKey.kt b/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceKey.kt index 68f576fe0..f005ad086 100644 --- a/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceKey.kt +++ b/preference-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/preference/model/entry/PreferenceKey.kt @@ -9,7 +9,9 @@ import kotlin.jvm.JvmInline * find a least common denominator with some reasonable limits on what the keys can contain. */ @JvmInline -value class PreferenceKey(val key: String) { +value class PreferenceKey( + val key: String +) { init { requireKeyConstraints(key) } diff --git a/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/AndroidPreferenceProvider.kt b/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/AndroidPreferenceProvider.kt index 370dceefe..285b382d9 100644 --- a/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/AndroidPreferenceProvider.kt +++ b/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/AndroidPreferenceProvider.kt @@ -172,9 +172,11 @@ class AndroidPreferenceProvider private constructor( val sharedPreferences = withContext(singleThreadedDispatcher) { val mainKey = - MasterKey.Builder(context).apply { - setKeyScheme(MasterKey.KeyScheme.AES256_GCM) - }.build() + MasterKey + .Builder(context) + .apply { + setKeyScheme(MasterKey.KeyScheme.AES256_GCM) + }.build() EncryptedSharedPreferences.create( context, diff --git a/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/EncryptedPreferenceProvider.kt b/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/EncryptedPreferenceProvider.kt index c2b6f95c9..0aa30fb76 100644 --- a/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/EncryptedPreferenceProvider.kt +++ b/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/EncryptedPreferenceProvider.kt @@ -3,8 +3,9 @@ package co.electriccoin.zcash.preference import android.content.Context import co.electriccoin.zcash.preference.api.PreferenceProvider -class EncryptedPreferenceProvider(private val context: Context) : PreferenceHolder() { - override suspend fun create(): PreferenceProvider { - return AndroidPreferenceProvider.newEncrypted(context, "co.electriccoin.zcash.encrypted") - } +class EncryptedPreferenceProvider( + private val context: Context +) : PreferenceHolder() { + override suspend fun create(): PreferenceProvider = + AndroidPreferenceProvider.newEncrypted(context, "co.electriccoin.zcash.encrypted") } diff --git a/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/StandardPreferenceProvider.kt b/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/StandardPreferenceProvider.kt index f698dcddd..c7df9e980 100644 --- a/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/StandardPreferenceProvider.kt +++ b/preference-impl-android-lib/src/main/java/co/electriccoin/zcash/preference/StandardPreferenceProvider.kt @@ -3,8 +3,9 @@ package co.electriccoin.zcash.preference import android.content.Context import co.electriccoin.zcash.preference.api.PreferenceProvider -class StandardPreferenceProvider(private val context: Context) : PreferenceHolder() { - override suspend fun create(): PreferenceProvider { - return AndroidPreferenceProvider.newStandard(context, "co.electriccoin.zcash") - } +class StandardPreferenceProvider( + private val context: Context +) : PreferenceHolder() { + override suspend fun create(): PreferenceProvider = + AndroidPreferenceProvider.newStandard(context, "co.electriccoin.zcash") } diff --git a/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/extension/PercentDecimalExt.kt b/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/extension/PercentDecimalExt.kt index 0c30f43bf..3ccaab920 100644 --- a/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/extension/PercentDecimalExt.kt +++ b/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/extension/PercentDecimalExt.kt @@ -10,9 +10,8 @@ import java.text.DecimalFormat import java.util.Locale @Suppress("MagicNumber") -fun PercentDecimal.toPercentageWithDecimal(decimalFormat: DecimalFormat = preparePercentDecimalFormat()): String { - return decimalFormat.format(decimal * 100) -} +fun PercentDecimal.toPercentageWithDecimal(decimalFormat: DecimalFormat = preparePercentDecimalFormat()): String = + decimalFormat.format(decimal * 100) private fun preparePercentDecimalFormat(): DecimalFormat = DecimalFormat().apply { diff --git a/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/SeedPhraseValidation.kt b/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/SeedPhraseValidation.kt index c2ca4a920..8d2171daf 100644 --- a/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/SeedPhraseValidation.kt +++ b/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/SeedPhraseValidation.kt @@ -15,7 +15,9 @@ sealed class SeedPhraseValidation { object FailedChecksum : SeedPhraseValidation() - class Valid(val seedPhrase: SeedPhrase) : SeedPhraseValidation() + class Valid( + val seedPhrase: SeedPhrase + ) : SeedPhraseValidation() companion object { suspend fun new(list: List): SeedPhraseValidation { diff --git a/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/ZecRequest.kt b/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/ZecRequest.kt index fefd27117..5f4f97ed1 100644 --- a/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/ZecRequest.kt +++ b/sdk-ext-lib/src/main/java/cash/z/ecc/sdk/model/ZecRequest.kt @@ -3,7 +3,11 @@ package cash.z.ecc.sdk.model import cash.z.ecc.android.sdk.model.WalletAddress import cash.z.ecc.android.sdk.model.Zatoshi -data class ZecRequest(val address: WalletAddress.Unified, val amount: Zatoshi, val message: ZecRequestMessage) { +data class ZecRequest( + val address: WalletAddress.Unified, + val amount: Zatoshi, + val message: ZecRequestMessage +) { // TODO [#397]: Waiting for an implementation of Uri parser in SDK project // TODO [#397]: https://github.com/Electric-Coin-Company/zcash-android-wallet-sdk/issues/397 suspend fun toUri(): String { @@ -21,7 +25,9 @@ data class ZecRequest(val address: WalletAddress.Unified, val amount: Zatoshi, v } @JvmInline -value class ZecRequestMessage(val value: String) { +value class ZecRequestMessage( + val value: String +) { init { require(value.length <= MAX_MESSAGE_LENGTH) } diff --git a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/AndroidApiVersion.kt b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/AndroidApiVersion.kt index 417610477..643964c56 100644 --- a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/AndroidApiVersion.kt +++ b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/AndroidApiVersion.kt @@ -13,9 +13,7 @@ object AndroidApiVersion { @ChecksSdkIntAtLeast(parameter = 0) private fun isAtLeast( @IntRange(from = Build.VERSION_CODES.BASE.toLong()) sdk: Int - ): Boolean { - return Build.VERSION.SDK_INT >= sdk - } + ): Boolean = Build.VERSION.SDK_INT >= sdk /** * @param sdk SDK version number to test against the current environment. @@ -23,9 +21,7 @@ object AndroidApiVersion { */ private fun isExactly( @IntRange(from = Build.VERSION_CODES.BASE.toLong()) sdk: Int - ): Boolean { - return Build.VERSION.SDK_INT == sdk - } + ): Boolean = Build.VERSION.SDK_INT == sdk val isExactlyO = isExactly(Build.VERSION_CODES.O_MR1) diff --git a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/CoroutineBroadcastReceiver.kt b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/CoroutineBroadcastReceiver.kt index 7c7843bb2..4864736c2 100644 --- a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/CoroutineBroadcastReceiver.kt +++ b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/CoroutineBroadcastReceiver.kt @@ -10,7 +10,9 @@ import kotlinx.coroutines.launch * @param broadcastReceiverScope Scope for performing asynchronous work in the broadcast receiver. * It is not recommended to cancel this scope. */ -abstract class CoroutineBroadcastReceiver(private val broadcastReceiverScope: CoroutineScope) : BroadcastReceiver() { +abstract class CoroutineBroadcastReceiver( + private val broadcastReceiverScope: CoroutineScope +) : BroadcastReceiver() { final override fun onReceive( context: Context, intent: Intent diff --git a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/StrictModeCompat.kt b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/StrictModeCompat.kt index f4c1126e7..ad33de277 100644 --- a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/StrictModeCompat.kt +++ b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/StrictModeCompat.kt @@ -13,40 +13,44 @@ object StrictModeCompat { StrictMode.enableDefaults() StrictMode.setThreadPolicy( - StrictMode.ThreadPolicy.Builder().apply { - detectAll() - if (isCrashOnViolation) { - penaltyDeath() - } else { - penaltyLog() - } - }.build() + StrictMode.ThreadPolicy + .Builder() + .apply { + detectAll() + if (isCrashOnViolation) { + penaltyDeath() + } else { + penaltyLog() + } + }.build() ) // Don't enable missing network tags, because those are noisy. StrictMode.setVmPolicy( - StrictMode.VmPolicy.Builder().apply { - if (AndroidApiVersion.isAtLeastS) { - detectUnsafeIntentLaunch() - } - detectActivityLeaks() - detectCleartextNetwork() - detectContentUriWithoutPermission() - detectFileUriExposure() - detectLeakedClosableObjects() - detectLeakedRegistrationObjects() - detectLeakedSqlLiteObjects() - if (AndroidApiVersion.isAtLeastP) { - // Disable because this is mostly flagging Android X and Play Services - // builder.detectNonSdkApiUsage(); - } + StrictMode.VmPolicy + .Builder() + .apply { + if (AndroidApiVersion.isAtLeastS) { + detectUnsafeIntentLaunch() + } + detectActivityLeaks() + detectCleartextNetwork() + detectContentUriWithoutPermission() + detectFileUriExposure() + detectLeakedClosableObjects() + detectLeakedRegistrationObjects() + detectLeakedSqlLiteObjects() + if (AndroidApiVersion.isAtLeastP) { + // Disable because this is mostly flagging Android X and Play Services + // builder.detectNonSdkApiUsage(); + } - if (isCrashOnViolation) { - penaltyDeath() - } else { - penaltyLog() - } - }.build() + if (isCrashOnViolation) { + penaltyDeath() + } else { + penaltyLog() + } + }.build() ) } } diff --git a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/AbstractProcessNameContentProvider.kt b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/AbstractProcessNameContentProvider.kt index 52f0e6803..133833925 100644 --- a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/AbstractProcessNameContentProvider.kt +++ b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/AbstractProcessNameContentProvider.kt @@ -50,37 +50,27 @@ open class AbstractProcessNameContentProvider : ContentProvider() { selection: String?, selectionArgs: Array?, sortOrder: String? - ): Cursor? { - throw UnsupportedOperationException() - } + ): Cursor? = throw UnsupportedOperationException() - override fun getType(uri: Uri): String? { - throw UnsupportedOperationException() - } + override fun getType(uri: Uri): String? = throw UnsupportedOperationException() override fun insert( uri: Uri, values: ContentValues? - ): Uri? { - throw UnsupportedOperationException() - } + ): Uri? = throw UnsupportedOperationException() override fun delete( uri: Uri, selection: String?, selectionArgs: Array? - ): Int { - throw UnsupportedOperationException() - } + ): Int = throw UnsupportedOperationException() override fun update( uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array? - ): Int { - throw UnsupportedOperationException() - } + ): Int = throw UnsupportedOperationException() companion object { internal fun getProcessNameLegacy( diff --git a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/ProcessNameCompat.kt b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/ProcessNameCompat.kt index 27df8a9dd..274b12650 100644 --- a/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/ProcessNameCompat.kt +++ b/spackle-android-lib/src/main/kotlin/co/electriccoin/zcash/spackle/process/ProcessNameCompat.kt @@ -54,15 +54,14 @@ object ProcessNameCompat { * @return Name of the current process. May return null if a failure occurs, which is possible * due to some race conditions in Android. */ - private fun searchForProcessName(context: Context): String? { - return if (AndroidApiVersion.isAtLeastTiramisu) { + private fun searchForProcessName(context: Context): String? = + if (AndroidApiVersion.isAtLeastTiramisu) { getProcessNameTPlus() } else if (AndroidApiVersion.isAtLeastP) { getProcessNamePPlus() } else { searchForProcessNameLegacy(context) } - } @RequiresApi(api = Build.VERSION_CODES.TIRAMISU) private fun getProcessNameTPlus() = Process.myProcessName() diff --git a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/LazyWithArgument.kt b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/LazyWithArgument.kt index 0f4c6cf5f..af84e7b7e 100644 --- a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/LazyWithArgument.kt +++ b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/LazyWithArgument.kt @@ -5,7 +5,9 @@ package co.electriccoin.zcash.spackle * * This class is thread-safe. */ -class LazyWithArgument(private val deferredCreator: ((Input) -> Output)) { +class LazyWithArgument( + private val deferredCreator: ((Input) -> Output) +) { @Volatile private var singletonInstance: Output? = null diff --git a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/SuspendingLazy.kt b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/SuspendingLazy.kt index 85accf95a..967194351 100644 --- a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/SuspendingLazy.kt +++ b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/SuspendingLazy.kt @@ -8,7 +8,9 @@ import kotlinx.coroutines.sync.withLock * * This class is thread-safe. */ -class SuspendingLazy(private val deferredCreator: suspend ((Input) -> Output)) { +class SuspendingLazy( + private val deferredCreator: suspend ((Input) -> Output) +) { private var singletonInstance: Output? = null private val mutex = Mutex() diff --git a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Index.kt b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Index.kt index 074493e6c..091cc4849 100644 --- a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Index.kt +++ b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Index.kt @@ -6,7 +6,9 @@ package co.electriccoin.zcash.spackle.model * @param value A 0-based index. Must be >= 0 */ @JvmInline -value class Index(val value: Int) { +value class Index( + val value: Int +) { init { require(value >= 0) { "Index must be >= 0 but actually is $value" } } diff --git a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Progress.kt b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Progress.kt index 55523ee70..73ba1bcb3 100644 --- a/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Progress.kt +++ b/spackle-lib/src/commonMain/kotlin/co/electriccoin/zcash/spackle/model/Progress.kt @@ -1,6 +1,9 @@ package co.electriccoin.zcash.spackle.model -data class Progress(val current: Index, val last: Index) { +data class Progress( + val current: Index, + val last: Index +) { init { require(last.value > 0) { "last must be > 0 but was $last" } require(last.value >= current.value) { "last ($last) must be >= current ($current)" } diff --git a/test-lib/src/main/kotlin/co/electriccoin/zcash/test/UiTestPrerequisites.kt b/test-lib/src/main/kotlin/co/electriccoin/zcash/test/UiTestPrerequisites.kt index d42d21a3c..9c3ac0e60 100644 --- a/test-lib/src/main/kotlin/co/electriccoin/zcash/test/UiTestPrerequisites.kt +++ b/test-lib/src/main/kotlin/co/electriccoin/zcash/test/UiTestPrerequisites.kt @@ -28,7 +28,8 @@ open class UiTestPrerequisites { private fun isScreenOn(): Boolean { val powerService = - ApplicationProvider.getApplicationContext() + ApplicationProvider + .getApplicationContext() .getSystemService(Context.POWER_SERVICE) as PowerManager return powerService.isInteractive } @@ -41,7 +42,8 @@ open class UiTestPrerequisites { private fun isKeyguardLocked(): Boolean { val keyguardService = ( - ApplicationProvider.getApplicationContext() + ApplicationProvider + .getApplicationContext() .getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager ) diff --git a/test-lib/src/main/kotlin/co/electriccoin/zcash/test/ZcashUiTestRunner.kt b/test-lib/src/main/kotlin/co/electriccoin/zcash/test/ZcashUiTestRunner.kt index 9d9a9db3c..be847d6ff 100644 --- a/test-lib/src/main/kotlin/co/electriccoin/zcash/test/ZcashUiTestRunner.kt +++ b/test-lib/src/main/kotlin/co/electriccoin/zcash/test/ZcashUiTestRunner.kt @@ -13,7 +13,8 @@ open class ZcashUiTestRunner : AndroidJUnitRunner() { super.onCreate(arguments) val powerManager = - ApplicationProvider.getApplicationContext() + ApplicationProvider + .getApplicationContext() .getSystemService(Context.POWER_SERVICE) as PowerManager // There is no alternative to this deprecated API. The suggestion of a view to keep the screen diff --git a/tools/.editorconfig b/tools/.editorconfig index 840b2a5a4..5a90c313c 100644 --- a/tools/.editorconfig +++ b/tools/.editorconfig @@ -4,4 +4,5 @@ root = true ktlint_standard_trailing-comma-on-call-site = disabled ktlint_standard_trailing-comma-on-declaration-site = disabled # When using Compose, suppress the `function-naming` rule in favor of PascalCase naming convention -ktlint_function_naming_ignore_when_annotated_with=Composable \ No newline at end of file +ktlint_function_naming_ignore_when_annotated_with=Composable +ktlint_standard_function-signature=disabled \ No newline at end of file diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Balance.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Balance.kt index 762b2f2fe..bec14502c 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Balance.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Balance.kt @@ -119,17 +119,18 @@ private fun splitBalance(balanceStringParts: ZecAmountTriple): Pair - if (separatorPosition + CUT_POSITION_OFFSET < balanceStringParts.main.length) { - separatorPosition + CUT_POSITION_OFFSET - } else { - balanceStringParts.main.length + balanceStringParts.main + .indexOf( + startIndex = 0, + char = MonetarySeparators.current(Locale.getDefault()).decimal, + ignoreCase = true + ).let { separatorPosition -> + if (separatorPosition + CUT_POSITION_OFFSET < balanceStringParts.main.length) { + separatorPosition + CUT_POSITION_OFFSET + } else { + balanceStringParts.main.length + } } - } val firstPart = buildString { @@ -160,7 +161,10 @@ data class ZecAmountTriple( ) @Immutable -data class BalanceTextStyle(val mostSignificantPart: TextStyle, val leastSignificantPart: TextStyle) +data class BalanceTextStyle( + val mostSignificantPart: TextStyle, + val leastSignificantPart: TextStyle +) object StyledBalanceDefaults { @Stable diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Checkbox.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Checkbox.kt index 827c3aae8..29098b8bb 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Checkbox.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Checkbox.kt @@ -103,8 +103,7 @@ fun LabeledCheckBox( top = ZcashTheme.dimens.spacingTiny, bottom = ZcashTheme.dimens.spacingTiny, end = ZcashTheme.dimens.spacingTiny - ) - .then( + ).then( if (checkBoxTestTag != null) { Modifier.testTag(checkBoxTestTag) } else { diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Chip.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Chip.kt index 75c38c675..c4d0896cc 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Chip.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Chip.kt @@ -120,8 +120,7 @@ fun ChipOnSurface( color = ZcashTheme.colors.layoutStrokeSecondary ), shape = RoundedCornerShape(size = ZcashTheme.dimens.regularRippleEffectCorner), - ) - .clickable { onClick() }, + ).clickable { onClick() }, color = ZcashTheme.colors.primaryColor, shadowElevation = ZcashTheme.dimens.chipShadowElevation, ) { @@ -134,8 +133,7 @@ fun ChipOnSurface( .padding( vertical = ZcashTheme.dimens.spacingMid, horizontal = ZcashTheme.dimens.spacingDefault - ) - .testTag(CommonTag.CHIP) + ).testTag(CommonTag.CHIP) ) } } diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt index 51b7663be..b54e6d708 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt @@ -45,7 +45,10 @@ fun Override( } } -data class ConfigurationOverride(val uiMode: UiMode?, val locale: LocaleList?) { +data class ConfigurationOverride( + val uiMode: UiMode?, + val locale: LocaleList? +) { fun newConfiguration(fromConfiguration: Configuration) = Configuration(fromConfiguration).apply { this@ConfigurationOverride.uiMode?.let { diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt index 9472e127c..98a0cc5fc 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt @@ -104,8 +104,7 @@ private fun PagerTab( .fillMaxSize() .background( if (selected) Color.Transparent else ZcashTheme.colors.layoutStroke - ) - .padding(vertical = ZcashTheme.dimens.spacingMid, horizontal = ZcashTheme.dimens.spacingXtiny), + ).padding(vertical = ZcashTheme.dimens.spacingMid, horizontal = ZcashTheme.dimens.spacingXtiny), contentAlignment = Alignment.Center, ) { Text( diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ScreenBrightness.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ScreenBrightness.kt index 347b84d78..2626e9940 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ScreenBrightness.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ScreenBrightness.kt @@ -8,12 +8,11 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update sealed class ScreenBrightnessState { - fun getChange(): ScreenBrightnessState { - return when (this) { + fun getChange(): ScreenBrightnessState = + when (this) { NORMAL -> FULL FULL -> NORMAL } - } data object FULL : ScreenBrightnessState() diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/SwitchWithLabel.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/SwitchWithLabel.kt index 10dcc6b42..4e330e3d4 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/SwitchWithLabel.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/SwitchWithLabel.kt @@ -32,8 +32,7 @@ fun SwitchWithLabel( indication = null, role = Role.Switch, onClick = { onStateChange(!state) } - ) - .fillMaxWidth() + ).fillMaxWidth() ) { val (text, spacer, switchButton) = createRefs() Body( diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextField.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextField.kt index 1c072752a..9247b2a71 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextField.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextField.kt @@ -90,8 +90,7 @@ fun FormTextField( } } } - } - .then( + }.then( if (withBorder) { Modifier.border( width = 1.dp, @@ -105,8 +104,7 @@ fun FormTextField( } else { Modifier } - ) - .then( + ).then( if (testTag.isNullOrEmpty()) { Modifier } else { diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextFieldColorsExt.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextFieldColorsExt.kt index d831b34ea..76c9addaa 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextFieldColorsExt.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/TextFieldColorsExt.kt @@ -32,6 +32,5 @@ internal val TextFieldColors.selectionColors: TextSelectionColors @Composable get() = textSelectionColors @Composable -internal fun TextFieldColors.cursorColor(isError: Boolean): State { - return rememberUpdatedState(if (isError) errorCursorColor else cursorColor) -} +internal fun TextFieldColors.cursorColor(isError: Boolean): State = + rememberUpdatedState(if (isError) errorCursorColor else cursorColor) diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiMainTopAppBar.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiMainTopAppBar.kt index 34a5b916d..7acb3f047 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiMainTopAppBar.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiMainTopAppBar.kt @@ -83,8 +83,7 @@ private fun AccountSwitch(state: AccountSwitchState) { onClick = state .onAccountTypeClick - ) - .padding(start = 4.dp), + ).padding(start = 4.dp), verticalAlignment = Alignment.CenterVertically ) { Image( diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt index 612d6509f..2e48a6a23 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt @@ -163,8 +163,7 @@ private fun FullscreenDialogContent( interactionSource = remember { MutableInteractionSource() }, indication = null, onClick = onBack - ) - .padding(start = 16.dp, end = 16.dp, bottom = 64.dp) + ).padding(start = 16.dp, end = 16.dp, bottom = 64.dp) ) { ZashiQrInternal( modifier = diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiRadioButton.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiRadioButton.kt index 55cf49c9b..b55e73807 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiRadioButton.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiRadioButton.kt @@ -60,8 +60,7 @@ fun RadioButton( interactionSource = remember { MutableInteractionSource() }, onClick = state.onClick, role = Role.Button, - ) - .padding(horizontal = 20.dp) + ).padding(horizontal = 20.dp) .then( if (testTag != null) { Modifier.testTag(testTag) diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt index 50e031570..3c74db00c 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt @@ -260,17 +260,13 @@ object ZashiListItemDefaults { fun primaryColors( borderColor: Color = Color.Unspecified, backgroundColor: Color = Color.Transparent - ): ZashiListItemColors { - return ZashiListItemColors(borderColor = borderColor, backgroundColor = backgroundColor) - } + ): ZashiListItemColors = ZashiListItemColors(borderColor = borderColor, backgroundColor = backgroundColor) @Composable fun secondaryColors( borderColor: Color = ZashiColors.Surfaces.strokeSecondary, backgroundColor: Color = Color.Transparent - ): ZashiListItemColors { - return ZashiListItemColors(borderColor = borderColor, backgroundColor = backgroundColor) - } + ): ZashiListItemColors = ZashiListItemColors(borderColor = borderColor, backgroundColor = backgroundColor) } @PreviewScreens diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/AndroidQrCodeImageGenerator.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/AndroidQrCodeImageGenerator.kt index cbb848a1d..2c20af817 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/AndroidQrCodeImageGenerator.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/AndroidQrCodeImageGenerator.kt @@ -14,7 +14,8 @@ object AndroidQrCodeImageGenerator : QrCodeImageGenerator { ): ImageBitmap { val colorArray = bitArray.toThemeColorArray(colors) - return Bitmap.createBitmap(colorArray, sizePixels, sizePixels, Bitmap.Config.ARGB_8888) + return Bitmap + .createBitmap(colorArray, sizePixels, sizePixels, Bitmap.Config.ARGB_8888) .asImageBitmap() } } diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ImageResource.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ImageResource.kt index b68ad0619..0a3b91a81 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ImageResource.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ImageResource.kt @@ -14,7 +14,9 @@ sealed interface ImageResource { @JvmInline @Immutable - value class DisplayString(val value: String) : ImageResource + value class DisplayString( + val value: String + ) : ImageResource } @Stable diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ScreenHeight.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ScreenHeight.kt index 36dfff285..16593db2c 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ScreenHeight.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/ScreenHeight.kt @@ -62,15 +62,13 @@ data class ScreenHeight( val systemStatusBarHeight: Dp, val systemNavigationBarHeight: Dp ) { - fun overallScreenHeight(): Dp { - return (contentHeight + systemBarsHeight()).also { + fun overallScreenHeight(): Dp = + (contentHeight + systemBarsHeight()).also { Twig.debug { "Screen height: Overall height: $it" } } - } - fun systemBarsHeight(): Dp { - return (systemStatusBarHeight + systemNavigationBarHeight).also { + fun systemBarsHeight(): Dp = + (systemStatusBarHeight + systemNavigationBarHeight).also { Twig.debug { "Screen height: System bars height: $it" } } - } } diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/StringResource.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/StringResource.kt index 36b809764..15a9be8e3 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/StringResource.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/util/StringResource.kt @@ -26,22 +26,37 @@ sealed interface StringResource { @JvmInline @Immutable - value class ByString(val value: String) : StringResource + value class ByString( + val value: String + ) : StringResource @Immutable - data class ByZatoshi(val zatoshi: Zatoshi) : StringResource + data class ByZatoshi( + val zatoshi: Zatoshi + ) : StringResource @Immutable - data class ByDateTime(val zonedDateTime: ZonedDateTime, val useFullFormat: Boolean) : StringResource + data class ByDateTime( + val zonedDateTime: ZonedDateTime, + val useFullFormat: Boolean + ) : StringResource @Immutable - data class ByYearMonth(val yearMonth: YearMonth) : StringResource + data class ByYearMonth( + val yearMonth: YearMonth + ) : StringResource @Immutable - data class ByTransactionId(val transactionId: String, val abbreviated: Boolean) : StringResource + data class ByTransactionId( + val transactionId: String, + val abbreviated: Boolean + ) : StringResource @Immutable - data class ByAddress(val address: String, val abbreviated: Boolean) : StringResource + data class ByAddress( + val address: String, + val abbreviated: Boolean + ) : StringResource } @Stable @@ -142,15 +157,28 @@ object StringResourceDefaults { .getDateTimeInstance( DateFormat.MEDIUM, DateFormat.SHORT, + ).format( + Date.from( + res.zonedDateTime + .toInstant() + .toKotlinInstant() + .toJavaInstant() + ) ) - .format(Date.from(res.zonedDateTime.toInstant().toKotlinInstant().toJavaInstant())) } else { val pattern = DateTimeFormatter.ofPattern("MMM dd") val start = res.zonedDateTime.format(pattern).orEmpty() val end = DateFormat .getTimeInstance(DateFormat.SHORT) - .format(Date.from(res.zonedDateTime.toInstant().toKotlinInstant().toJavaInstant())) + .format( + Date.from( + res.zonedDateTime + .toInstant() + .toKotlinInstant() + .toJavaInstant() + ) + ) return "$start $end" } @@ -161,23 +189,21 @@ object StringResourceDefaults { return yearMonth.format(pattern).orEmpty() } - fun convertAddress(res: StringResource.ByAddress): String { - return if (res.abbreviated && res.address.isNotBlank()) { + fun convertAddress(res: StringResource.ByAddress): String = + if (res.abbreviated && res.address.isNotBlank()) { "${res.address.take(ADDRESS_MAX_LENGTH_ABBREVIATED)}..." } else { res.address } - } - fun convertTransactionId(res: StringResource.ByTransactionId): String { - return if (res.abbreviated) { + fun convertTransactionId(res: StringResource.ByTransactionId): String = + if (res.abbreviated) { "${res.transactionId.take(TRANSACTION_MAX_PREFIX_SUFFIX_LENGHT)}...${res.transactionId.takeLast( TRANSACTION_MAX_PREFIX_SUFFIX_LENGHT )}" } else { res.transactionId } - } } private const val TRANSACTION_MAX_PREFIX_SUFFIX_LENGHT = 5 diff --git a/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt b/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt index 8215524c5..4d26f6794 100644 --- a/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt +++ b/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTest.kt @@ -101,14 +101,15 @@ class ScanViewTest : UiTestPrerequisites() { it.assertDoesNotExist() } - composeTestRule.onNodeWithText( - getStringResourceWithArgs( - resId = R.string.scan_state_permission, - getStringResource(R.string.app_name) - ) - ).also { - it.assertIsDisplayed() - } + composeTestRule + .onNodeWithText( + getStringResourceWithArgs( + resId = R.string.scan_state_permission, + getStringResource(R.string.app_name) + ) + ).also { + it.assertIsDisplayed() + } composeTestRule.onNodeWithText(getStringResource(R.string.scan_settings_button), ignoreCase = true).also { it.assertIsDisplayed() diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt index 71a9e673c..79a592209 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt @@ -37,7 +37,9 @@ class ScreenBrightnessTest : UiTestPrerequisites() { assertEquals(ScreenBrightnessState.NORMAL, testSetup.getSecureBrightnessCount()) } - private class TestSetup(composeTestRule: ComposeContentTestRule) { + private class TestSetup( + composeTestRule: ComposeContentTestRule + ) { val mutableScreenBrightnessFlag = MutableStateFlow(true) private val screenBrightness = ScreenBrightness diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenSecurityTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenSecurityTest.kt index a6e439d41..3d20e9c31 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenSecurityTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenSecurityTest.kt @@ -58,7 +58,9 @@ class ScreenSecurityTest : UiTestPrerequisites() { assertEquals(0, testSetup.getSecureScreenCount()) } - private class TestSetup(composeTestRule: ComposeContentTestRule) { + private class TestSetup( + composeTestRule: ComposeContentTestRule + ) { val mutableSecureScreenFlag = MutableStateFlow(true) private val screenSecurity = ScreenSecurity() diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenTimeoutTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenTimeoutTest.kt index 6f24b329a..2e81a9d81 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenTimeoutTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenTimeoutTest.kt @@ -38,7 +38,9 @@ class ScreenTimeoutTest : UiTestPrerequisites() { assertEquals(0, testSetup.getScreenTimeoutCount()) } - private class TestSetup(composeTestRule: ComposeContentTestRule) { + private class TestSetup( + composeTestRule: ComposeContentTestRule + ) { val mutableScreenTimeoutFlag = MutableStateFlow(true) private val screenTimeout = ScreenTimeout() diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntriesTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntriesTest.kt index e33a06123..996e23bc5 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntriesTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntriesTest.kt @@ -13,7 +13,8 @@ class ConfigurationEntriesTest { fun keys_unique() { val fieldValueSet = mutableSetOf() - ConfigurationEntries::class.memberProperties + ConfigurationEntries::class + .memberProperties .map { it.getter.call(ConfigurationEntries) } .map { it as DefaultEntry<*> } .map { it.key } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/preference/StandardPreferenceKeysTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/preference/StandardPreferenceKeysTest.kt index b1467c3c5..02616edde 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/preference/StandardPreferenceKeysTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/preference/StandardPreferenceKeysTest.kt @@ -13,7 +13,8 @@ class StandardPreferenceKeysTest { fun unique_keys() { val fieldValueSet = mutableSetOf() - StandardPreferenceKeys::class.memberProperties + StandardPreferenceKeys::class + .memberProperties .map { it.getter.call(StandardPreferenceKeys) } .map { it as PreferenceDefault<*> } .map { it.key } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/about/view/AboutViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/about/view/AboutViewTest.kt index 13ecc666b..4846d9235 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/about/view/AboutViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/about/view/AboutViewTest.kt @@ -30,8 +30,7 @@ class AboutViewTest { .onNodeWithContentDescription( getStringResource(R.string.back_navigation_content_description), ignoreCase = true - ) - .also { + ).also { it.assertExists() } @@ -60,11 +59,12 @@ class AboutViewTest { assertEquals(0, testSetup.getOnBackCount()) - composeTestRule.onNodeWithContentDescription( - getStringResource(R.string.back_navigation_content_description) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithContentDescription( + getStringResource(R.string.back_navigation_content_description) + ).also { + it.performClick() + } assertEquals(1, testSetup.getOnBackCount()) } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/account/view/AccountViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/account/view/AccountViewTest.kt index 37a7b2bc9..bd4719a43 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/account/view/AccountViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/account/view/AccountViewTest.kt @@ -28,7 +28,8 @@ class AccountViewTest : UiTestPrerequisites() { fun check_all_elementary_ui_elements_displayed() { newTestSetup() - composeTestRule.onNodeWithTag(CommonTag.TOP_APP_BAR) + composeTestRule + .onNodeWithTag(CommonTag.TOP_APP_BAR) .also { it.assertIsDisplayed() } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesViewTest.kt index 8758225c2..e88a00b61 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesViewTest.kt @@ -35,7 +35,8 @@ class BalancesViewTest : UiTestPrerequisites() { fun check_all_elementary_ui_elements_displayed() { newTestSetup() - composeTestRule.onNodeWithTag(CommonTag.TOP_APP_BAR) + composeTestRule + .onNodeWithTag(CommonTag.TOP_APP_BAR) .also { it.assertIsDisplayed() } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/exportdata/view/ExportPrivateDataViewTestSetup.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/exportdata/view/ExportPrivateDataViewTestSetup.kt index e0befdf5b..ce970d306 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/exportdata/view/ExportPrivateDataViewTestSetup.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/exportdata/view/ExportPrivateDataViewTestSetup.kt @@ -8,7 +8,9 @@ import co.electriccoin.zcash.ui.design.theme.ZcashTheme import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicInteger -class ExportPrivateDataViewTestSetup(private val composeTestRule: ComposeContentTestRule) { +class ExportPrivateDataViewTestSetup( + private val composeTestRule: ComposeContentTestRule +) { private val onBackCount = AtomicInteger(0) private val onAgree = AtomicBoolean(false) diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/view/OnboardingViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/view/OnboardingViewTest.kt index 4baddde85..2abf365b8 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/view/OnboardingViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/onboarding/view/OnboardingViewTest.kt @@ -19,34 +19,35 @@ class OnboardingViewTest : UiTestPrerequisites() { @get:Rule val composeTestRule = createComposeRule() - private fun newTestSetup(): OnboardingTestSetup { - return OnboardingTestSetup(composeTestRule).apply { + private fun newTestSetup(): OnboardingTestSetup = + OnboardingTestSetup(composeTestRule).apply { setDefaultContent() } - } @Test @MediumTest fun layout() { newTestSetup() - composeTestRule.onNodeWithText( - text = getStringResource(R.string.onboarding_create_new_wallet), - ignoreCase = true - ).also { - it.assertExists() - it.assertIsEnabled() - it.assertHasClickAction() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.onboarding_create_new_wallet), + ignoreCase = true + ).also { + it.assertExists() + it.assertIsEnabled() + it.assertHasClickAction() + } - composeTestRule.onNodeWithText( - text = getStringResource(R.string.onboarding_import_existing_wallet), - ignoreCase = true - ).also { - it.assertExists() - it.assertIsEnabled() - it.assertHasClickAction() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.onboarding_import_existing_wallet), + ignoreCase = true + ).also { + it.assertExists() + it.assertIsEnabled() + it.assertHasClickAction() + } } @Test diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveViewTest.kt index 9cbaf9c38..8c2c99e4d 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveViewTest.kt @@ -32,11 +32,12 @@ class ReceiveViewTest { newTestSetup() // Enable substring for ellipsizing - composeTestRule.onNodeWithText( - text = "${WalletAddressFixture.UNIFIED_ADDRESS_STRING.take(20)}...", - substring = true, - useUnmergedTree = true - ).assertExists() + composeTestRule + .onNodeWithText( + text = "${WalletAddressFixture.UNIFIED_ADDRESS_STRING.take(20)}...", + substring = true, + useUnmergedTree = true + ).assertExists() } @Test @@ -47,11 +48,12 @@ class ReceiveViewTest { assertEquals(0, testSetup.getOnSettingsCount()) - composeTestRule.onNodeWithContentDescription( - getStringResource(R.string.settings_menu_content_description) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithContentDescription( + getStringResource(R.string.settings_menu_content_description) + ).also { + it.performClick() + } assertEquals(1, testSetup.getOnSettingsCount()) } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt index 4bf01bdeb..64944693a 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt @@ -34,7 +34,9 @@ class RestoreViewSecuredScreenTest : UiTestPrerequisites() { assertEquals(1, testSetup.getSecureScreenCount()) } - private class TestSetup(composeTestRule: ComposeContentTestRule) { + private class TestSetup( + composeTestRule: ComposeContentTestRule + ) { private val screenSecurity = ScreenSecurity() fun getSecureScreenCount() = screenSecurity.referenceCount.value diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt index a4d8018d7..8b5773895 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt @@ -61,17 +61,19 @@ class RestoreViewTest : UiTestPrerequisites() { it.assertTextContains("ab") } - composeTestRule.onNode( - matcher = hasText("abandon", substring = true) and hasTestTag(RestoreTag.AUTOCOMPLETE_ITEM) - ).also { - it.assertExists() - } + composeTestRule + .onNode( + matcher = hasText("abandon", substring = true) and hasTestTag(RestoreTag.AUTOCOMPLETE_ITEM) + ).also { + it.assertExists() + } - composeTestRule.onNode( - matcher = hasText("able", substring = true) and hasTestTag(RestoreTag.AUTOCOMPLETE_ITEM) - ).also { - it.assertExists() - } + composeTestRule + .onNode( + matcher = hasText("able", substring = true) and hasTestTag(RestoreTag.AUTOCOMPLETE_ITEM) + ).also { + it.assertExists() + } } @Test @@ -83,11 +85,12 @@ class RestoreViewTest : UiTestPrerequisites() { it.performTextInput("ab") } - composeTestRule.onNode( - matcher = hasText("abandon", substring = true) and hasTestTag(RestoreTag.AUTOCOMPLETE_ITEM) - ).also { - it.performClick() - } + composeTestRule + .onNode( + matcher = hasText("abandon", substring = true) and hasTestTag(RestoreTag.AUTOCOMPLETE_ITEM) + ).also { + it.performClick() + } composeTestRule.onNodeWithTag(RestoreTag.AUTOCOMPLETE_LAYOUT).also { it.assertDoesNotExist() @@ -119,7 +122,8 @@ class RestoreViewTest : UiTestPrerequisites() { it.assertDoesNotExist() } - composeTestRule.onNode(matcher = hasText(text = "abandon", substring = true)) + composeTestRule + .onNode(matcher = hasText(text = "abandon", substring = true)) .also { it.assertExists() } @@ -130,12 +134,13 @@ class RestoreViewTest : UiTestPrerequisites() { fun seed_invalid_phrase_does_not_progress() { newTestSetup(initialWordsList = generateSequence { "abandon" }.take(SeedPhrase.SEED_PHRASE_SIZE).toList()) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_seed_button_next), - ignoreCase = true - ).also { - it.assertIsNotEnabled() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_seed_button_next), + ignoreCase = true + ).also { + it.assertIsNotEnabled() + } } @Test @@ -146,12 +151,13 @@ class RestoreViewTest : UiTestPrerequisites() { newTestSetup(initialWordsList = SeedPhraseFixture.new().split) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_seed_button_next), - ignoreCase = true - ).also { - it.assertExists() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_seed_button_next), + ignoreCase = true + ).also { + it.assertExists() + } } @Test @@ -159,23 +165,25 @@ class RestoreViewTest : UiTestPrerequisites() { fun seed_clear() { newTestSetup(initialWordsList = listOf("abandon")) - composeTestRule.onNode( - matcher = hasText(text = "abandon", substring = true), - useUnmergedTree = true - ).also { - it.assertExists() - } + composeTestRule + .onNode( + matcher = hasText(text = "abandon", substring = true), + useUnmergedTree = true + ).also { + it.assertExists() + } composeTestRule.onNodeWithText(getStringResource(R.string.restore_button_clear)).also { it.performClick() } - composeTestRule.onNode( - matcher = hasText("abandon", substring = true) and hasTestTag(CommonTag.CHIP), - useUnmergedTree = true - ).also { - it.assertDoesNotExist() - } + composeTestRule + .onNode( + matcher = hasText("abandon", substring = true) and hasTestTag(CommonTag.CHIP), + useUnmergedTree = true + ).also { + it.assertDoesNotExist() + } } @Test @@ -187,14 +195,15 @@ class RestoreViewTest : UiTestPrerequisites() { initialWordsList = SeedPhraseFixture.new().split ) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_birthday_button_restore), - ignoreCase = true - ).also { - it.performScrollTo() - it.assertIsEnabled() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_birthday_button_restore), + ignoreCase = true + ).also { + it.performScrollTo() + it.assertIsEnabled() + it.performClick() + } assertEquals(testSetup.getRestoreHeight(), null) assertEquals(1, testSetup.getOnFinishedCount()) @@ -210,16 +219,20 @@ class RestoreViewTest : UiTestPrerequisites() { ) composeTestRule.onNodeWithTag(RestoreTag.BIRTHDAY_TEXT_FIELD).also { - it.performTextInput(ZcashNetwork.Mainnet.saplingActivationHeight.value.toString()) + it.performTextInput( + ZcashNetwork.Mainnet.saplingActivationHeight.value + .toString() + ) } - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_birthday_button_restore), - ignoreCase = true - ).also { - it.assertIsEnabled() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_birthday_button_restore), + ignoreCase = true + ).also { + it.assertIsEnabled() + it.performClick() + } assertEquals(testSetup.getRestoreHeight(), ZcashNetwork.Mainnet.saplingActivationHeight) assertEquals(1, testSetup.getOnFinishedCount()) @@ -234,24 +247,26 @@ class RestoreViewTest : UiTestPrerequisites() { initialWordsList = SeedPhraseFixture.new().split ) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_birthday_button_restore), - ignoreCase = true - ).also { - it.assertIsEnabled() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_birthday_button_restore), + ignoreCase = true + ).also { + it.assertIsEnabled() + } composeTestRule.onNodeWithTag(RestoreTag.BIRTHDAY_TEXT_FIELD).also { it.performTextInput((ZcashNetwork.Mainnet.saplingActivationHeight.value - 1L).toString()) } - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_birthday_button_restore), - ignoreCase = true - ).also { - it.assertIsNotEnabled() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_birthday_button_restore), + ignoreCase = true + ).also { + it.assertIsNotEnabled() + it.performClick() + } assertNull(testSetup.getRestoreHeight()) assertEquals(0, testSetup.getOnFinishedCount()) @@ -270,13 +285,14 @@ class RestoreViewTest : UiTestPrerequisites() { it.performTextInput("1.2") } - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_birthday_button_restore), - ignoreCase = true - ).also { - it.assertIsNotEnabled() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_birthday_button_restore), + ignoreCase = true + ).also { + it.assertIsNotEnabled() + it.performClick() + } assertNull(testSetup.getRestoreHeight()) assertEquals(0, testSetup.getOnFinishedCount()) @@ -293,12 +309,13 @@ class RestoreViewTest : UiTestPrerequisites() { assertEquals(0, testSetup.getOnFinishedCount()) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.restore_birthday_button_restore), - ignoreCase = true - ).also { - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.restore_birthday_button_restore), + ignoreCase = true + ).also { + it.performClick() + } assertEquals(1, testSetup.getOnFinishedCount()) } @@ -310,11 +327,12 @@ class RestoreViewTest : UiTestPrerequisites() { assertEquals(0, testSetup.getOnBackCount()) - composeTestRule.onNodeWithContentDescription( - getStringResource(R.string.back_navigation_content_description) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithContentDescription( + getStringResource(R.string.back_navigation_content_description) + ).also { + it.performClick() + } assertEquals(1, testSetup.getOnBackCount()) } @@ -330,11 +348,12 @@ class RestoreViewTest : UiTestPrerequisites() { assertEquals(0, testSetup.getOnBackCount()) - composeTestRule.onNodeWithContentDescription( - getStringResource(R.string.back_navigation_content_description) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithContentDescription( + getStringResource(R.string.back_navigation_content_description) + ).also { + it.performClick() + } // There appears to be a bug introduced in Compose 1.4.0 which makes this necessary composeTestRule.mainClock.autoAdvance = false diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTest.kt index 60244e3b8..77fc066d2 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTest.kt @@ -67,12 +67,13 @@ class ScanViewBasicTest : UiTestPrerequisites() { // Permission denied ui items (not visible): - composeTestRule.onNodeWithText( - text = getStringResource(R.string.scan_settings_button), - ignoreCase = true - ).also { - it.assertDoesNotExist() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.scan_settings_button), + ignoreCase = true + ).also { + it.assertDoesNotExist() + } } @Test diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt index ce85949d4..ea13890a4 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt @@ -7,7 +7,9 @@ import co.electriccoin.zcash.ui.fixture.VersionInfoFixture import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicInteger -class SecurityWarningViewTestSetup(private val composeTestRule: ComposeContentTestRule) { +class SecurityWarningViewTestSetup( + private val composeTestRule: ComposeContentTestRule +) { private val onBackCount = AtomicInteger(0) private val onAcknowledged = AtomicBoolean(false) diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/settings/view/SettingsViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/settings/view/SettingsViewTest.kt index 72feb339b..41f402e86 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/settings/view/SettingsViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/settings/view/SettingsViewTest.kt @@ -29,11 +29,12 @@ class SettingsViewTest : UiTestPrerequisites() { assertEquals(0, testSetup.getBackCount()) - composeTestRule.onNodeWithContentDescription( - getStringResource(R.string.back_navigation_content_description) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithContentDescription( + getStringResource(R.string.back_navigation_content_description) + ).also { + it.performClick() + } assertEquals(1, testSetup.getBackCount()) } @@ -45,12 +46,13 @@ class SettingsViewTest : UiTestPrerequisites() { assertEquals(0, testSetup.getFeedbackCount()) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.settings_feedback), - ignoreCase = true - ).also { - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.settings_feedback), + ignoreCase = true + ).also { + it.performClick() + } assertEquals(1, testSetup.getFeedbackCount()) } @@ -62,12 +64,13 @@ class SettingsViewTest : UiTestPrerequisites() { assertEquals(0, testSetup.getAdvancedSettingsCount()) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.settings_advanced_settings), - ignoreCase = true - ).also { - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.settings_advanced_settings), + ignoreCase = true + ).also { + it.performClick() + } assertEquals(1, testSetup.getAdvancedSettingsCount()) } @@ -79,13 +82,14 @@ class SettingsViewTest : UiTestPrerequisites() { assertEquals(0, testSetup.getAboutCount()) - composeTestRule.onNodeWithText( - text = getStringResource(R.string.settings_about_us), - ignoreCase = true - ).also { - it.performScrollTo() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = getStringResource(R.string.settings_about_us), + ignoreCase = true + ).also { + it.performScrollTo() + it.performClick() + } assertEquals(1, testSetup.getAboutCount()) } @@ -145,11 +149,12 @@ class SettingsViewTest : UiTestPrerequisites() { composeTestRule.openTroubleshootingMenu() - composeTestRule.onNodeWithText( - getStringResource(R.string.settings_troubleshooting_enable_background_sync) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithText( + getStringResource(R.string.settings_troubleshooting_enable_background_sync) + ).also { + it.performClick() + } assertEquals(1, testSetup.getBackgroundSyncCount()) } @@ -168,11 +173,12 @@ class SettingsViewTest : UiTestPrerequisites() { composeTestRule.openTroubleshootingMenu() - composeTestRule.onNodeWithText( - getStringResource(R.string.settings_troubleshooting_enable_keep_screen_on) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithText( + getStringResource(R.string.settings_troubleshooting_enable_keep_screen_on) + ).also { + it.performClick() + } assertEquals(1, testSetup.getKeepScreenOnSyncCount()) } @@ -191,11 +197,12 @@ class SettingsViewTest : UiTestPrerequisites() { composeTestRule.openTroubleshootingMenu() - composeTestRule.onNodeWithText( - getStringResource(R.string.settings_troubleshooting_enable_analytics) - ).also { - it.performClick() - } + composeTestRule + .onNodeWithText( + getStringResource(R.string.settings_troubleshooting_enable_analytics) + ).also { + it.performClick() + } assertEquals(1, testSetup.getAnalyticsCount()) } diff --git a/ui-lib/src/foss/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt b/ui-lib/src/foss/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt index 45530643a..2df9b28cf 100644 --- a/ui-lib/src/foss/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt +++ b/ui-lib/src/foss/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt @@ -26,7 +26,11 @@ class QrCodeAnalyzerImpl( override fun analyze(image: ImageProxy) { image.use { if (image.format in supportedImageFormats) { - val bytes = image.planes.first().buffer.toByteArray() + val bytes = + image.planes + .first() + .buffer + .toByteArray() Twig.verbose { "Scan result: " + @@ -89,14 +93,15 @@ class QrCodeAnalyzerImpl( runCatching { val result = - MultiFormatReader().apply { - setHints( - mapOf( - DecodeHintType.POSSIBLE_FORMATS to arrayListOf(BarcodeFormat.QR_CODE), - DecodeHintType.ALSO_INVERTED to true + MultiFormatReader() + .apply { + setHints( + mapOf( + DecodeHintType.POSSIBLE_FORMATS to arrayListOf(BarcodeFormat.QR_CODE), + DecodeHintType.ALSO_INVERTED to true + ) ) - ) - }.decodeWithState(binaryBmp) + }.decodeWithState(binaryBmp) onQrCodeScanned(result.text) }.onFailure { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/global/WalletCoordinator.kt b/ui-lib/src/main/java/co/electriccoin/zcash/global/WalletCoordinator.kt index d2ff2986e..6ccd3d987 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/global/WalletCoordinator.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/global/WalletCoordinator.kt @@ -12,8 +12,8 @@ fun WalletCoordinator.Companion.newInstance( context: Context, encryptedPreferenceProvider: EncryptedPreferenceProvider, persistableWalletPreference: PersistableWalletPreferenceDefault -): WalletCoordinator { - return WalletCoordinator( +): WalletCoordinator = + WalletCoordinator( context = context, persistableWallet = flow { @@ -22,6 +22,5 @@ fun WalletCoordinator.Companion.newInstance( accountName = context.getString(R.string.zashi_wallet_name), keySource = ZASHI_KEYSOURCE ) -} private const val ZASHI_KEYSOURCE = "zashi" diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/BiometricActivity.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/BiometricActivity.kt index 66d835b0d..a60bb0dbc 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/BiometricActivity.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/BiometricActivity.kt @@ -42,11 +42,11 @@ class BiometricActivity : FragmentActivity() { ) val promptInfo = - BiometricPrompt.PromptInfo.Builder() + BiometricPrompt.PromptInfo + .Builder() .setTitle( getString(R.string.authentication_system_ui_title, getString(R.string.app_name)) - ) - .setSubtitle(subtitle) + ).setSubtitle(subtitle) .setAllowedAuthenticators(biometricRepository.allowedAuthenticators) .build() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt index 3c1259f93..7cb97852b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt @@ -472,7 +472,11 @@ private fun MainActivity.NavigationHome( val isEnoughSpace by storageCheckViewModel.isEnoughSpace.collectAsStateWithLifecycle() - val sdkStatus = walletViewModel.currentWalletSnapshot.collectAsStateWithLifecycle().value?.status + val sdkStatus = + walletViewModel.currentWalletSnapshot + .collectAsStateWithLifecycle() + .value + ?.status val currentAppState = applicationStateProvider.state.collectAsStateWithLifecycle().value diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/NavigationRouter.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/NavigationRouter.kt index 88ac682d5..e34f73d9f 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/NavigationRouter.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/NavigationRouter.kt @@ -69,13 +69,21 @@ class NavigationRouterImpl : NavigationRouter { } sealed interface NavigationCommand { - data class Forward(val route: Any) : NavigationCommand + data class Forward( + val route: Any + ) : NavigationCommand - data class Replace(val route: Any) : NavigationCommand + data class Replace( + val route: Any + ) : NavigationCommand - data class ReplaceAll(val route: Any) : NavigationCommand + data class ReplaceAll( + val route: Any + ) : NavigationCommand - data class NewRoot(val route: Any) : NavigationCommand + data class NewRoot( + val route: Any + ) : NavigationCommand data object Back : NavigationCommand diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/AccountDataSource.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/AccountDataSource.kt index 99112717a..1032e1907 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/AccountDataSource.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/AccountDataSource.kt @@ -106,8 +106,7 @@ class AccountDataSourceImpl( ) } } - } - ?.flatMapLatest { accountsWithAddresses -> + }?.flatMapLatest { accountsWithAddresses -> if (accountsWithAddresses == null) { flowOf(null) } else { @@ -132,8 +131,7 @@ class AccountDataSourceImpl( } } } - } - ?.retryWhen { _, attempt -> + }?.retryWhen { _, attempt -> emit(null) delay(attempt.coerceAtMost(RETRY_DELAY).seconds) true @@ -189,8 +187,7 @@ class AccountDataSourceImpl( accounts.size == 1, ) } - } - ?.sortedDescending() + }?.sortedDescending() }.flowOn(Dispatchers.IO) .stateIn( scope = scope, @@ -202,15 +199,13 @@ class AccountDataSourceImpl( allAccounts .map { account -> account?.firstOrNull { it.isSelected } - } - .distinctUntilChanged() + }.distinctUntilChanged() override val zashiAccount: Flow = allAccounts .map { account -> account?.filterIsInstance()?.firstOrNull() - } - .distinctUntilChanged() + }.distinctUntilChanged() override suspend fun getAllAccounts() = withContext(Dispatchers.IO) { @@ -250,7 +245,8 @@ class AccountDataSourceImpl( index: Long ): Account = withContext(Dispatchers.IO) { - synchronizerProvider.getSynchronizer() + synchronizerProvider + .getSynchronizer() .importAccountByUfvk( AccountImportSetup( accountName = context.getString(R.string.keystone_wallet_name), diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/LocalAddressBookDataSource.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/LocalAddressBookDataSource.kt index 03dcb0920..d49e72096 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/LocalAddressBookDataSource.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/LocalAddressBookDataSource.kt @@ -108,7 +108,10 @@ class LocalAddressBookDataSourceImpl( lastUpdated = lastUpdated, version = ADDRESS_BOOK_SERIALIZATION_V1, contacts = - addressBook?.contacts.orEmpty().toMutableList() + addressBook + ?.contacts + .orEmpty() + .toMutableList() .apply { set( indexOf(contact), @@ -118,8 +121,7 @@ class LocalAddressBookDataSourceImpl( lastUpdated = Clock.System.now() ) ) - } - .toList(), + }.toList(), ).also { addressBook = it } @@ -138,11 +140,13 @@ class LocalAddressBookDataSourceImpl( lastUpdated = lastUpdated, version = ADDRESS_BOOK_SERIALIZATION_V1, contacts = - addressBook?.contacts.orEmpty().toMutableList() + addressBook + ?.contacts + .orEmpty() + .toMutableList() .apply { remove(addressBookContact) - } - .toList(), + }.toList(), ).also { addressBook = it } @@ -176,7 +180,8 @@ class LocalAddressBookDataSourceImpl( } return if (unencryptedFile != null) { - addressBookProvider.readLegacyUnencryptedAddressBookFromFile(unencryptedFile) + addressBookProvider + .readLegacyUnencryptedAddressBookFromFile(unencryptedFile) .also { unencryptedAddressBook -> writeAddressBookToLocalStorage(unencryptedAddressBook, addressBookKey) unencryptedFile.deleteSuspend() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/MetadataDataSource.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/MetadataDataSource.kt index b1766333a..87cf4aa3f 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/MetadataDataSource.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/MetadataDataSource.kt @@ -167,8 +167,8 @@ class MetadataDataSourceImpl( txId: String, key: MetadataKey, transform: (AnnotationMetadata) -> AnnotationMetadata - ): Metadata { - return updateMetadata( + ): Metadata = + updateMetadata( key = key, transform = { metadata -> metadata.copy( @@ -184,14 +184,13 @@ class MetadataDataSourceImpl( ) } ) - } private suspend fun updateMetadataBookmark( txId: String, key: MetadataKey, transform: (BookmarkMetadata) -> BookmarkMetadata - ): Metadata { - return updateMetadata( + ): Metadata = + updateMetadata( key = key, transform = { metadata -> metadata.copy( @@ -207,13 +206,12 @@ class MetadataDataSourceImpl( ) } ) - } private suspend fun updateMetadata( key: MetadataKey, transform: (AccountMetadata) -> AccountMetadata - ): Metadata { - return withContext(Dispatchers.IO) { + ): Metadata = + withContext(Dispatchers.IO) { val metadata = getMetadataInternal(key) val accountMetadata = metadata.accountMetadata @@ -228,7 +226,6 @@ class MetadataDataSourceImpl( updatedMetadata } - } } private fun defaultAccountMetadata() = @@ -258,11 +255,11 @@ private fun List.replaceOrAdd( ): List { val index = this.indexOfFirst(predicate) return if (index != -1) { - this.toMutableList() + this + .toMutableList() .apply { set(index, transform(this[index])) - } - .toList() + }.toList() } else { this + transform(null) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/ProposalDataSource.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/ProposalDataSource.kt index 963aef484..b4dbb635e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/ProposalDataSource.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/datasource/ProposalDataSource.kt @@ -62,7 +62,9 @@ interface ProposalDataSource { suspend fun redactPcztForSigner(pczt: Pczt): Pczt } -class TransactionProposalNotCreatedException(reason: Exception) : Exception(reason) +class TransactionProposalNotCreatedException( + reason: Exception +) : Exception(reason) @Suppress("TooManyFunctions") class ProposalDataSourceImpl( @@ -150,7 +152,8 @@ class ProposalDataSourceImpl( override suspend fun addProofsToPczt(pczt: Pczt): Pczt = withContext(Dispatchers.IO) { - synchronizerProvider.getSynchronizer() + synchronizerProvider + .getSynchronizer() .addProofsToPczt(pczt) } @@ -178,7 +181,8 @@ class ProposalDataSourceImpl( override suspend fun redactPcztForSigner(pczt: Pczt): Pczt = withContext(Dispatchers.IO) { - synchronizerProvider.getSynchronizer() + synchronizerProvider + .getSynchronizer() .redactPcztForSigner(pczt) } @@ -232,13 +236,12 @@ class ProposalDataSourceImpl( } @Suppress("TooGenericExceptionCaught") - private inline fun getOrThrow(block: () -> T): T { - return try { + private inline fun getOrThrow(block: () -> T): T = + try { block() } catch (e: Exception) { throw TransactionProposalNotCreatedException(e) } - } private suspend fun AddressType.toWalletAddress(value: String) = when (this) { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/mapper/TransactionHistoryMapper.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/mapper/TransactionHistoryMapper.kt index 9ce9c5030..4aa9db491 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/mapper/TransactionHistoryMapper.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/mapper/TransactionHistoryMapper.kt @@ -23,8 +23,8 @@ class TransactionHistoryMapper { data: ListTransactionData, restoreTimestamp: Instant, onTransactionClick: (Transaction) -> Unit - ): TransactionState { - return TransactionState( + ): TransactionState = + TransactionState( key = data.transaction.id.txIdString(), icon = getIcon(data), title = getTitle(data), @@ -34,7 +34,6 @@ class TransactionHistoryMapper { onClick = { onTransactionClick(data.transaction) }, isUnread = isUnread(data, restoreTimestamp) ) - } private fun isUnread( data: ListTransactionData, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/FastestServersState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/FastestServersState.kt index 798ff92a6..556528102 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/FastestServersState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/FastestServersState.kt @@ -6,4 +6,7 @@ import co.electriccoin.lightwallet.client.model.LightWalletEndpoint * @property servers an ascended sorted list of fastest servers, or null if none loaded * @property isLoading indicates whether newer data is being loaded */ -data class FastestServersState(val servers: List?, val isLoading: Boolean) +data class FastestServersState( + val servers: List?, + val isLoading: Boolean +) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/SubmitResult.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/SubmitResult.kt index 091592dfc..07b46f80d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/SubmitResult.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/SubmitResult.kt @@ -3,23 +3,31 @@ package co.electriccoin.zcash.ui.common.model import cash.z.ecc.android.sdk.model.TransactionSubmitResult sealed interface SubmitResult { - data class Success(val txIds: List) : SubmitResult + data class Success( + val txIds: List + ) : SubmitResult - data class MultipleTrxFailure(val results: List) : SubmitResult + data class MultipleTrxFailure( + val results: List + ) : SubmitResult sealed interface SimpleTrxFailure : SubmitResult { fun toErrorMessage(): String fun toErrorStacktrace(): String - data class SimpleTrxFailureGrpc(val result: TransactionSubmitResult.Failure) : SimpleTrxFailure { + data class SimpleTrxFailureGrpc( + val result: TransactionSubmitResult.Failure + ) : SimpleTrxFailure { // Currently, we intentionally do not include any error related details override fun toErrorMessage() = "" override fun toErrorStacktrace() = "" } - data class SimpleTrxFailureSubmit(val result: TransactionSubmitResult.Failure) : SimpleTrxFailure { + data class SimpleTrxFailureSubmit( + val result: TransactionSubmitResult.Failure + ) : SimpleTrxFailure { override fun toErrorMessage() = buildString { appendLine("Error code: ${result.code}") @@ -29,7 +37,9 @@ sealed interface SubmitResult { override fun toErrorStacktrace(): String = toErrorMessage() } - data class SimpleTrxFailureOther(val error: Throwable) : SimpleTrxFailure { + data class SimpleTrxFailureOther( + val error: Throwable + ) : SimpleTrxFailure { override fun toErrorMessage() = error.message ?: "Unknown error" override fun toErrorStacktrace(): String = error.stackTraceToString() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/ValidContactName.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/ValidContactName.kt index 9997760a6..00c378eb8 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/ValidContactName.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/ValidContactName.kt @@ -1,4 +1,6 @@ package co.electriccoin.zcash.ui.common.model @JvmInline -value class ValidContactName(val value: String) +value class ValidContactName( + val value: String +) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/VersionInfo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/VersionInfo.kt index 39af0caed..ace912b51 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/VersionInfo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/model/VersionInfo.kt @@ -49,17 +49,18 @@ data class VersionInfo( ) } - private fun resolveBestReleaseNotes(): String { - return if (Locale.getDefault().language.contains("es", ignoreCase = true)) { + private fun resolveBestReleaseNotes(): String = + if (Locale.getDefault().language.contains("es", ignoreCase = true)) { releaseNotesEs } else { releaseNotesEn } - } } } -enum class DistributionDimension(val value: String) { +enum class DistributionDimension( + val value: String +) { STORE("store"), FOSS("foss") } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookKeyStorageProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookKeyStorageProvider.kt index 42a38197f..5dddc86ee 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookKeyStorageProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookKeyStorageProvider.kt @@ -22,9 +22,7 @@ class AddressBookKeyStorageProviderImpl( ) : AddressBookKeyStorageProvider { private val default = AddressBookKeyPreferenceDefault() - override suspend fun getAddressBookKey(): AddressBookKey? { - return default.getValue(encryptedPreferenceProvider()) - } + override suspend fun getAddressBookKey(): AddressBookKey? = default.getValue(encryptedPreferenceProvider()) override suspend fun storeAddressBookKey(addressBookKey: AddressBookKey) { default.putValue(encryptedPreferenceProvider(), addressBookKey) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookProvider.kt index 016befe33..52b159408 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookProvider.kt @@ -43,18 +43,16 @@ class AddressBookProviderImpl( override fun readAddressBookFromFile( file: File, addressBookKey: AddressBookKey - ): AddressBook { - return file.inputStream().use { stream -> + ): AddressBook = + file.inputStream().use { stream -> addressBookEncryptor.decrypt( key = addressBookKey, inputStream = stream ) } - } - override fun readLegacyUnencryptedAddressBookFromFile(file: File): AddressBook { - return file.inputStream().use { stream -> + override fun readLegacyUnencryptedAddressBookFromFile(file: File): AddressBook = + file.inputStream().use { stream -> addressBookSerializer.deserializeAddressBook(stream) } - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookStorageProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookStorageProvider.kt index 05a417d4e..ff2b86071 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookStorageProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/AddressBookStorageProvider.kt @@ -20,15 +20,13 @@ interface AddressBookStorageProvider { class AddressBookStorageProviderImpl( private val context: Context ) : AddressBookStorageProvider { - override fun getStorageFile(addressBookKey: AddressBookKey): File? { - return File(getOrCreateAddressBookDir(), addressBookKey.fileIdentifier()) + override fun getStorageFile(addressBookKey: AddressBookKey): File? = + File(getOrCreateAddressBookDir(), addressBookKey.fileIdentifier()) .takeIf { it.exists() && it.isFile } - } - override fun getLegacyUnencryptedStorageFile(): File? { - return File(context.noBackupFilesDir, LEGACY_UNENCRYPTED_ADDRESS_BOOK_FILE_NAME) + override fun getLegacyUnencryptedStorageFile(): File? = + File(context.noBackupFilesDir, LEGACY_UNENCRYPTED_ADDRESS_BOOK_FILE_NAME) .takeIf { it.exists() && it.isFile } - } override fun getOrCreateStorageFile(addressBookKey: AddressBookKey): File { val file = File(getOrCreateAddressBookDir(), addressBookKey.fileIdentifier()) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/ApplicationStateProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/ApplicationStateProvider.kt index bea6a39f6..1d40f616e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/ApplicationStateProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/ApplicationStateProvider.kt @@ -20,9 +20,7 @@ class ApplicationStateProviderImpl : ApplicationStateProvider { override val state = _state.asStateFlow() - override suspend fun getApplicationState(): Lifecycle.Event? { - return _state.last() - } + override suspend fun getApplicationState(): Lifecycle.Event? = _state.last() override fun setApplicationState(newState: Lifecycle.Event) { _state.update { newState } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetDefaultServersProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetDefaultServersProvider.kt index 1e734c8b8..e11a1bfb0 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetDefaultServersProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetDefaultServersProvider.kt @@ -8,7 +8,9 @@ import co.electriccoin.lightwallet.client.model.LightWalletEndpoint // TODO [#1273]: Add ChooseServer Tests #1273 // TODO [#1273]: https://github.com/Electric-Coin-Company/zashi-android/issues/1273 -class GetDefaultServersProvider(private val application: Application) { +class GetDefaultServersProvider( + private val application: Application +) { private val lightWalletEndpoints by lazy { if (ZcashNetwork.fromResources(application) == ZcashNetwork.Mainnet) { listOf( diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetVersionInfoProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetVersionInfoProvider.kt index dd622bdc5..fc23d6cde 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetVersionInfoProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetVersionInfoProvider.kt @@ -3,6 +3,8 @@ package co.electriccoin.zcash.ui.common.provider import android.app.Application import co.electriccoin.zcash.ui.common.model.VersionInfo -class GetVersionInfoProvider(private val application: Application) { +class GetVersionInfoProvider( + private val application: Application +) { operator fun invoke() = VersionInfo.new(application) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetZcashCurrencyProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetZcashCurrencyProvider.kt index ca3074a85..2c761b487 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetZcashCurrencyProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/GetZcashCurrencyProvider.kt @@ -3,7 +3,9 @@ package co.electriccoin.zcash.ui.common.provider import android.app.Application import cash.z.ecc.sdk.type.ZcashCurrency -class GetZcashCurrencyProvider(private val application: Application) { +class GetZcashCurrencyProvider( + private val application: Application +) { operator fun invoke() = ZcashCurrency.fromResources(application) fun getLocalizedName() = ZcashCurrency.getLocalizedName(application) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataKeyStorageProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataKeyStorageProvider.kt index 6063aacad..ca2177e80 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataKeyStorageProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataKeyStorageProvider.kt @@ -25,12 +25,11 @@ class MetadataKeyStorageProviderImpl( ) : MetadataKeyStorageProvider { private val default = MetadataKeyPreferenceDefault() - override suspend fun get(account: WalletAccount): MetadataKey? { - return default.getValue( + override suspend fun get(account: WalletAccount): MetadataKey? = + default.getValue( walletAccount = account, preferenceProvider = encryptedPreferenceProvider(), ) - } override suspend fun store( key: MetadataKey, @@ -51,11 +50,11 @@ private class MetadataKeyPreferenceDefault { suspend fun getValue( walletAccount: WalletAccount, preferenceProvider: PreferenceProvider, - ): MetadataKey? { - return preferenceProvider.getStringSet( - key = getKey(walletAccount) - )?.decode() - } + ): MetadataKey? = + preferenceProvider + .getStringSet( + key = getKey(walletAccount) + )?.decode() suspend fun putValue( newValue: MetadataKey?, @@ -73,20 +72,19 @@ private class MetadataKeyPreferenceDefault { PreferenceKey("metadata_key_${walletAccount.sdkAccount.accountUuid.value.toHexString()}") @OptIn(ExperimentalEncodingApi::class) - private fun MetadataKey?.encode(): Set? { - return this + private fun MetadataKey?.encode(): Set? = + this ?.bytes ?.map { Base64.encode(it.toByteArray(secretKeyAccess)) - } - ?.toSet() - } + }?.toSet() @OptIn(ExperimentalEncodingApi::class) private fun Set?.decode() = if (this != null) { MetadataKey( - this.toList() + this + .toList() .map { SecretBytes.copyFrom(Base64.decode(it), secretKeyAccess) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataProvider.kt index 51301af44..3dda69945 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataProvider.kt @@ -39,12 +39,11 @@ class MetadataProviderImpl( override fun readMetadataFromFile( file: File, addressBookKey: MetadataKey - ): Metadata { - return file.inputStream().use { stream -> + ): Metadata = + file.inputStream().use { stream -> metadataEncryptor.decrypt( key = addressBookKey, inputStream = stream ) } - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataStorageProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataStorageProvider.kt index b67e85c50..31be76bdb 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataStorageProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/MetadataStorageProvider.kt @@ -13,10 +13,9 @@ interface MetadataStorageProvider { class MetadataStorageProviderImpl( private val context: Context ) : MetadataStorageProvider { - override fun getStorageFile(key: MetadataKey): File? { - return File(getOrCreateMetadataDir(), key.fileIdentifier()) + override fun getStorageFile(key: MetadataKey): File? = + File(getOrCreateMetadataDir(), key.fileIdentifier()) .takeIf { it.exists() && it.isFile } - } override fun getOrCreateStorageFile(key: MetadataKey): File { val file = File(getOrCreateMetadataDir(), key.fileIdentifier()) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/RestoreTimestampStorageProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/RestoreTimestampStorageProvider.kt index a7db565ee..bfdb26980 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/RestoreTimestampStorageProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/RestoreTimestampStorageProvider.kt @@ -19,9 +19,7 @@ class RestoreTimestampStorageProviderImpl( ) : RestoreTimestampStorageProvider { private val default = RestoreTimestampPreferenceDefault() - override suspend fun get(): Instant? { - return default.getValue(encryptedPreferenceProvider()) - } + override suspend fun get(): Instant? = default.getValue(encryptedPreferenceProvider()) override suspend fun store(key: Instant) { default.putValue(encryptedPreferenceProvider(), key) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SelectedAccountUUIDProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SelectedAccountUUIDProvider.kt index bf85ca7c3..be31605d8 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SelectedAccountUUIDProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SelectedAccountUUIDProvider.kt @@ -29,9 +29,7 @@ class SelectedAccountUUIDProviderImpl( emitAll(default.observe(encryptedPreferenceProvider())) } - override suspend fun getUUID(): AccountUuid? { - return default.getValue(encryptedPreferenceProvider()) - } + override suspend fun getUUID(): AccountUuid? = default.getValue(encryptedPreferenceProvider()) override suspend fun setUUID(uuid: AccountUuid) { default.putValue(encryptedPreferenceProvider(), uuid) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SynchronizerProvider.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SynchronizerProvider.kt index f765cfad3..28565acf3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SynchronizerProvider.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/provider/SynchronizerProvider.kt @@ -28,7 +28,9 @@ interface SynchronizerProvider { suspend fun getSdkSynchronizer() = getSynchronizer() as SdkSynchronizer } -class SynchronizerProviderImpl(walletCoordinator: WalletCoordinator) : SynchronizerProvider { +class SynchronizerProviderImpl( + walletCoordinator: WalletCoordinator +) : SynchronizerProvider { private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob()) @OptIn(ExperimentalCoroutinesApi::class) @@ -48,8 +50,7 @@ class SynchronizerProviderImpl(walletCoordinator: WalletCoordinator) : Synchroni emit(synchronizer) } } - } - .flowOn(Dispatchers.IO) + }.flowOn(Dispatchers.IO) .stateIn( scope = scope, started = SharingStarted.WhileSubscribed(Duration.ZERO, Duration.ZERO), diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/AddressBookRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/AddressBookRepository.kt index 7412d66b0..100078b8d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/AddressBookRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/AddressBookRepository.kt @@ -104,18 +104,15 @@ class AddressBookRepositoryImpl( addressBookCache.update { null } } - override suspend fun getContactByAddress(address: String): AddressBookContact? { - return observeContactByAddress(address).first() - } + override suspend fun getContactByAddress(address: String): AddressBookContact? = + observeContactByAddress(address).first() - override fun observeContactByAddress(address: String): Flow { - return addressBook + override fun observeContactByAddress(address: String): Flow = + addressBook .filterNotNull() .map { it.contacts.find { contact -> contact.address == address } - } - .distinctUntilChanged() - } + }.distinctUntilChanged() private suspend fun ensureSynchronization() { if (addressBookCache.value == null) { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/BiometricRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/BiometricRepository.kt index c724b1573..5c65bba7f 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/BiometricRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/BiometricRepository.kt @@ -32,11 +32,17 @@ data class BiometricRequest( sealed interface BiometricResult { val requestCode: String - data class Success(override val requestCode: String) : BiometricResult + data class Success( + override val requestCode: String + ) : BiometricResult - data class Failure(override val requestCode: String) : BiometricResult + data class Failure( + override val requestCode: String + ) : BiometricResult - data class Cancelled(override val requestCode: String) : BiometricResult + data class Cancelled( + override val requestCode: String + ) : BiometricResult } class BiometricsFailureException : Exception() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ConfigurationRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ConfigurationRepository.kt index 550e5143d..652ac78cf 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ConfigurationRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ConfigurationRepository.kt @@ -40,7 +40,8 @@ class ConfigurationRepositoryImpl( private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob()) override val configurationFlow: StateFlow = - androidConfigurationProvider.getConfigurationFlow() + androidConfigurationProvider + .getConfigurationFlow() .stateIn( scope = scope, started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), @@ -55,8 +56,7 @@ class ConfigurationRepositoryImpl( !versionInfo.isTestnet && ConfigurationEntries.IS_FLEXA_AVAILABLE.getValue(it) && BuildConfig.ZCASH_FLEXA_KEY.isNotEmpty() - } - .stateIn( + }.stateIn( scope = scope, started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), initialValue = null diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ExchangeRateRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ExchangeRateRepository.kt index 36cf5a997..bd0abbcf7 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ExchangeRateRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/ExchangeRateRepository.kt @@ -59,28 +59,28 @@ class ExchangeRateRepositoryImpl( @OptIn(ExperimentalCoroutinesApi::class) private val exchangeRateUsdInternal = - isExchangeRateUsdOptedIn.flatMapLatest { optedIn -> - if (optedIn == true) { - walletRepository.synchronizer - .filterNotNull() - .flatMapLatest { synchronizer -> - synchronizer.exchangeRateUsd - } - } else { - flowOf(ObserveFiatCurrencyResult(isLoading = false, currencyConversion = null)) - } - }.stateIn( - scope = scope, - started = SharingStarted.WhileSubscribed(USD_EXCHANGE_REFRESH_LOCK_THRESHOLD), - initialValue = ObserveFiatCurrencyResult(isLoading = false, currencyConversion = null) - ) + isExchangeRateUsdOptedIn + .flatMapLatest { optedIn -> + if (optedIn == true) { + walletRepository.synchronizer + .filterNotNull() + .flatMapLatest { synchronizer -> + synchronizer.exchangeRateUsd + } + } else { + flowOf(ObserveFiatCurrencyResult(isLoading = false, currencyConversion = null)) + } + }.stateIn( + scope = scope, + started = SharingStarted.WhileSubscribed(USD_EXCHANGE_REFRESH_LOCK_THRESHOLD), + initialValue = ObserveFiatCurrencyResult(isLoading = false, currencyConversion = null) + ) private val usdExchangeRateTimestamp = exchangeRateUsdInternal .map { it.currencyConversion?.timestamp - } - .distinctUntilChanged() + }.distinctUntilChanged() private val refreshExchangeRateUsdLock = RefreshLock( @@ -149,8 +149,7 @@ class ExchangeRateRepositoryImpl( .onEach { Twig.info { "[USD] $it" } send(it) - } - .launchIn(this) + }.launchIn(this) awaitClose { // do nothing diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/FlexaRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/FlexaRepository.kt index 9417516d8..4b4b07dcc 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/FlexaRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/FlexaRepository.kt @@ -118,7 +118,8 @@ class FlexaRepositoryImpl( ) private fun String.toSha256() = - MessageDigest.getInstance("SHA-256") + MessageDigest + .getInstance("SHA-256") .digest(toByteArray()) .fold("") { str, value -> str + "%02x".format(value) } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/KeystoneProposalRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/KeystoneProposalRepository.kt index 6fc1d8b6e..d8ca8c079 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/KeystoneProposalRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/KeystoneProposalRepository.kt @@ -62,7 +62,9 @@ class ParsePCZTException : Exception() sealed interface SubmitProposalState { data object Submitting : SubmitProposalState - data class Result(val submitResult: SubmitResult) : SubmitProposalState + data class Result( + val submitResult: SubmitResult + ) : SubmitProposalState } @Suppress("TooManyFunctions") diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/MetadataRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/MetadataRepository.kt index 9ad8fdd9a..f921454cd 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/MetadataRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/MetadataRepository.kt @@ -47,7 +47,8 @@ class MetadataRepositoryImpl( private val metadataDataSource: MetadataDataSource, private val metadataKeyStorageProvider: MetadataKeyStorageProvider, private val persistableWalletProvider: PersistableWalletProvider, -) : MetadataRepository, CloseableScopeHolder by CloseableScopeHolderImpl(Dispatchers.IO) { +) : MetadataRepository, + CloseableScopeHolder by CloseableScopeHolderImpl(Dispatchers.IO) { private val command = Channel() @OptIn(ExperimentalCoroutinesApi::class) @@ -67,8 +68,7 @@ class MetadataRepositoryImpl( .receiveAsFlow() .filter { it.account.sdkAccount.accountUuid == account.sdkAccount.accountUuid - } - .collect { command -> + }.collect { command -> val new = when (command) { is Command.CreateOrUpdateTxNote -> @@ -106,8 +106,7 @@ class MetadataRepositoryImpl( // do nothing } } - } - .stateIn( + }.stateIn( scope = scope, started = SharingStarted.Lazily, initialValue = null @@ -171,8 +170,7 @@ class MetadataRepositoryImpl( isRead = accountMetadata?.read?.any { it == txId } == true, note = accountMetadata?.annotations?.find { it.txId == txId }?.content, ) - } - .distinctUntilChanged() + }.distinctUntilChanged() .onStart { emit(null) } private suspend fun getMetadataKey(selectedAccount: WalletAccount): MetadataKey { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/TransactionRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/TransactionRepository.kt index 8a0fb1e36..c8788cc81 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/TransactionRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/TransactionRepository.kt @@ -64,170 +64,180 @@ class TransactionRepositoryImpl( accountDataSource.selectedAccount.map { it?.sdkAccount } ) { synchronizer, account -> synchronizer to account - }.distinctUntilChanged().flatMapLatest { (synchronizer, account) -> - if (synchronizer == null || account == null) { - flowOf(null) - } else { - channelFlow?> { - send(null) + }.distinctUntilChanged() + .flatMapLatest { (synchronizer, account) -> + if (synchronizer == null || account == null) { + flowOf(null) + } else { + channelFlow?> { + send(null) - launch { - synchronizer - .getTransactions(account.accountUuid) - .mapLatest { transactions -> - transactions.map { transaction -> - when (transaction.transactionState) { - Expired -> - when { - transaction.isShielding -> - ShieldTransaction.Failed( - timestamp = createTimestamp(transaction) ?: Instant.now(), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.totalSpent, - id = transaction.txId, - memoCount = transaction.memoCount, - fee = transaction.netValue, - overview = transaction - ) + launch { + synchronizer + .getTransactions(account.accountUuid) + .mapLatest { transactions -> + transactions + .map { transaction -> + when (transaction.transactionState) { + Expired -> + when { + transaction.isShielding -> + ShieldTransaction.Failed( + timestamp = + createTimestamp(transaction) ?: Instant.now(), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.totalSpent, + id = transaction.txId, + memoCount = transaction.memoCount, + fee = transaction.netValue, + overview = transaction + ) - transaction.isSentTransaction -> - SendTransaction.Failed( - timestamp = createTimestamp(transaction) ?: Instant.now(), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.netValue, - id = transaction.txId, - memoCount = transaction.memoCount, - fee = transaction.feePaid, - overview = transaction - ) + transaction.isSentTransaction -> + SendTransaction.Failed( + timestamp = + createTimestamp(transaction) ?: Instant.now(), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.netValue, + id = transaction.txId, + memoCount = transaction.memoCount, + fee = transaction.feePaid, + overview = transaction + ) - else -> - ReceiveTransaction.Failed( - timestamp = createTimestamp(transaction) ?: Instant.now(), - transactionOutputs = - synchronizer.getTransactionOutputs(transaction), - amount = transaction.netValue, - id = transaction.txId, - memoCount = transaction.memoCount, - overview = transaction - ) + else -> + ReceiveTransaction.Failed( + timestamp = + createTimestamp(transaction) ?: Instant.now(), + transactionOutputs = + synchronizer.getTransactionOutputs(transaction), + amount = transaction.netValue, + id = transaction.txId, + memoCount = transaction.memoCount, + overview = transaction + ) + } + + Confirmed -> + when { + transaction.isShielding -> + ShieldTransaction.Success( + timestamp = + createTimestamp(transaction) ?: Instant.now(), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.totalSpent, + id = transaction.txId, + memoCount = transaction.memoCount, + fee = transaction.netValue, + overview = transaction + ) + + transaction.isSentTransaction -> + SendTransaction.Success( + timestamp = + createTimestamp(transaction) ?: Instant.now(), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.netValue, + id = transaction.txId, + memoCount = transaction.memoCount, + fee = transaction.feePaid, + overview = transaction + ) + + else -> + ReceiveTransaction.Success( + timestamp = + createTimestamp(transaction) ?: Instant.now(), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.netValue, + id = transaction.txId, + memoCount = transaction.memoCount, + overview = transaction + ) + } + + Pending -> + when { + transaction.isShielding -> + ShieldTransaction.Pending( + timestamp = createTimestamp(transaction), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.totalSpent, + id = transaction.txId, + memoCount = transaction.memoCount, + fee = transaction.netValue, + overview = transaction + ) + + transaction.isSentTransaction -> + SendTransaction.Pending( + timestamp = createTimestamp(transaction), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.netValue, + id = transaction.txId, + memoCount = transaction.memoCount, + fee = transaction.feePaid, + overview = transaction + ) + + else -> + ReceiveTransaction.Pending( + timestamp = createTimestamp(transaction), + transactionOutputs = + synchronizer.getTransactionOutputs + (transaction), + amount = transaction.netValue, + id = transaction.txId, + memoCount = transaction.memoCount, + overview = transaction + ) + } + + else -> error("Unexpected transaction stat") } - - Confirmed -> - when { - transaction.isShielding -> - ShieldTransaction.Success( - timestamp = createTimestamp(transaction) ?: Instant.now(), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.totalSpent, - id = transaction.txId, - memoCount = transaction.memoCount, - fee = transaction.netValue, - overview = transaction - ) - - transaction.isSentTransaction -> - SendTransaction.Success( - timestamp = createTimestamp(transaction) ?: Instant.now(), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.netValue, - id = transaction.txId, - memoCount = transaction.memoCount, - fee = transaction.feePaid, - overview = transaction - ) - - else -> - ReceiveTransaction.Success( - timestamp = createTimestamp(transaction) ?: Instant.now(), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.netValue, - id = transaction.txId, - memoCount = transaction.memoCount, - overview = transaction - ) - } - - Pending -> - when { - transaction.isShielding -> - ShieldTransaction.Pending( - timestamp = createTimestamp(transaction), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.totalSpent, - id = transaction.txId, - memoCount = transaction.memoCount, - fee = transaction.netValue, - overview = transaction - ) - - transaction.isSentTransaction -> - SendTransaction.Pending( - timestamp = createTimestamp(transaction), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.netValue, - id = transaction.txId, - memoCount = transaction.memoCount, - fee = transaction.feePaid, - overview = transaction - ) - - else -> - ReceiveTransaction.Pending( - timestamp = createTimestamp(transaction), - transactionOutputs = - synchronizer.getTransactionOutputs - (transaction), - amount = transaction.netValue, - id = transaction.txId, - memoCount = transaction.memoCount, - overview = transaction - ) - } - - else -> error("Unexpected transaction stat") - } - }.sortedByDescending { transaction -> - transaction.timestamp ?: Instant.now() + }.sortedByDescending { transaction -> + transaction.timestamp ?: Instant.now() + } + }.collect { + send(it) } - } - .collect { - send(it) - } - } + } - awaitClose { - // do nothing + awaitClose { + // do nothing + } } } - } - }.stateIn( - scope = scope, - started = SharingStarted.WhileSubscribed(5.seconds, Duration.ZERO), - initialValue = null - ) + }.stateIn( + scope = scope, + started = SharingStarted.WhileSubscribed(5.seconds, Duration.ZERO), + initialValue = null + ) - private fun createTimestamp(transaction: TransactionOverview): Instant? { - return transaction.blockTimeEpochSeconds?.let { Instant.ofEpochSecond(it) } - } + private fun createTimestamp(transaction: TransactionOverview): Instant? = + transaction.blockTimeEpochSeconds?.let { + Instant.ofEpochSecond(it) + } override suspend fun getMemos(transaction: Transaction): List = withContext(Dispatchers.IO) { - synchronizerProvider.getSynchronizer().getMemos(transaction.overview) + synchronizerProvider + .getSynchronizer() + .getMemos(transaction.overview) .mapNotNull { memo -> memo.takeIf { it.isNotEmpty() } } .toList() } @@ -257,8 +267,7 @@ class TransactionRepositoryImpl( .synchronizer .flatMapLatest { synchronizer -> synchronizer?.getTransactionsByMemoSubstring(memo)?.onEmpty { emit(listOf()) } ?: flowOf(null) - } - .distinctUntilChanged() + }.distinctUntilChanged() override suspend fun getTransactions(): List = currentTransactions.filterNotNull().first() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/WalletRepository.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/WalletRepository.kt index 2e7cd5885..45ab5cae6 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/WalletRepository.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/repository/WalletRepository.kt @@ -192,12 +192,10 @@ class WalletRepositoryImpl( FastestServersState(servers = it.servers, isLoading = false) } } ?: emptyFlow() - } - .onEach { + }.onEach { previousFastestServerState = it send(it) - } - .launchIn(this) + }.launchIn(this) }.stateIn( scope = scope, started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), @@ -213,19 +211,17 @@ class WalletRepositoryImpl( override val currentWalletSnapshot: StateFlow = combine(synchronizer, currentAccount) { synchronizer, currentAccount -> synchronizer to currentAccount - } - .flatMapLatest { (synchronizer, currentAccount) -> - if (synchronizer == null || currentAccount == null) { - flowOf(null) - } else { - toWalletSnapshot(synchronizer, currentAccount) - } + }.flatMapLatest { (synchronizer, currentAccount) -> + if (synchronizer == null || currentAccount == null) { + flowOf(null) + } else { + toWalletSnapshot(synchronizer, currentAccount) } - .stateIn( - scope = scope, - started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - initialValue = null - ) + }.stateIn( + scope = scope, + started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + initialValue = null + ) /** * A flow of the wallet block synchronization state. @@ -234,7 +230,8 @@ class WalletRepositoryImpl( flow { emitAll( StandardPreferenceKeys.WALLET_RESTORING_STATE - .observe(standardPreferenceProvider()).map { persistedNumber -> + .observe(standardPreferenceProvider()) + .map { persistedNumber -> WalletRestoringState.fromNumber(persistedNumber) } ) @@ -316,14 +313,12 @@ class WalletRepositoryImpl( } } - override suspend fun getSelectedServer(): LightWalletEndpoint { - return persistableWallet + override suspend fun getSelectedServer(): LightWalletEndpoint = + persistableWallet .map { it?.endpoint - } - .filterNotNull() + }.filterNotNull() .first() - } override suspend fun getAllServers(): List { val defaultServers = getDefaultServers() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/BaseSerializer.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/BaseSerializer.kt index a9d30a8c6..2ec1d3d77 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/BaseSerializer.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/BaseSerializer.kt @@ -4,22 +4,21 @@ import java.io.InputStream import java.nio.ByteBuffer abstract class BaseSerializer { - protected fun Int.createByteArray(): ByteArray { - return this.toLong().createByteArray() - } + protected fun Int.createByteArray(): ByteArray = this.toLong().createByteArray() - protected fun Long.createByteArray(): ByteArray { - return ByteBuffer.allocate(Long.SIZE_BYTES).order(ADDRESS_BOOK_BYTE_ORDER).putLong(this).array() - } + protected fun Long.createByteArray(): ByteArray = + ByteBuffer + .allocate(Long.SIZE_BYTES) + .order(ADDRESS_BOOK_BYTE_ORDER) + .putLong(this) + .array() protected fun String.createByteArray(): ByteArray { val byteArray = this.toByteArray() return byteArray.size.createByteArray() + byteArray } - protected fun InputStream.readInt(): Int { - return readLong().toInt() - } + protected fun InputStream.readInt(): Int = readLong().toInt() protected fun InputStream.readLong(): Long { val buffer = ByteArray(Long.SIZE_BYTES) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/InstantSerializer.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/InstantSerializer.kt index 86752a012..5ff2bbeb9 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/InstantSerializer.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/InstantSerializer.kt @@ -19,7 +19,5 @@ object InstantSerializer : KSerializer { encoder.encodeLong(value.toEpochMilli()) } - override fun deserialize(decoder: Decoder): Instant { - return Instant.ofEpochMilli(decoder.decodeLong()) - } + override fun deserialize(decoder: Decoder): Instant = Instant.ofEpochMilli(decoder.decodeLong()) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookEncryptor.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookEncryptor.kt index f244539fe..620761e4e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookEncryptor.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookEncryptor.kt @@ -27,7 +27,8 @@ interface AddressBookEncryptor { class AddressBookEncryptorImpl( private val addressBookSerializer: AddressBookSerializer, -) : AddressBookEncryptor, BaseSerializer() { +) : BaseSerializer(), + AddressBookEncryptor { private val version: Int = ADDRESS_BOOK_ENCRYPTION_V1 private val saltSize: Int = ADDRESS_BOOK_SALT_SIZE @@ -85,7 +86,6 @@ class AddressBookEncryptorImpl( addressBookSerializer.serializeAddressBook(outputStream, data) } - private fun deserialize(inputStream: ByteArrayInputStream): AddressBook { - return addressBookSerializer.deserializeAddressBook(inputStream) - } + private fun deserialize(inputStream: ByteArrayInputStream): AddressBook = + addressBookSerializer.deserializeAddressBook(inputStream) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookKey.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookKey.kt index fdbc4e12e..70c4e6c74 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookKey.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookKey.kt @@ -16,7 +16,9 @@ import com.google.crypto.tink.util.SecretBytes /** * The long-term key that can decrypt an account's encrypted address book. */ -class AddressBookKey(val key: SecretBytes) : Key { +class AddressBookKey( + val key: SecretBytes +) : Key { /** * Derives the filename that this key is able to decrypt. */ diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookSerializer.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookSerializer.kt index 7a8a1f256..9c62e6610 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookSerializer.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/addressbook/AddressBookSerializer.kt @@ -23,8 +23,8 @@ class AddressBookSerializer : BaseSerializer() { } } - fun deserializeAddressBook(inputStream: InputStream): AddressBook { - return AddressBook( + fun deserializeAddressBook(inputStream: InputStream): AddressBook = + AddressBook( version = inputStream.readInt(), lastUpdated = inputStream.readLong().let { Instant.fromEpochMilliseconds(it) }, contacts = @@ -38,5 +38,4 @@ class AddressBookSerializer : BaseSerializer() { } } ) - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadaEncryptor.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadaEncryptor.kt index 0ecc64760..848aec882 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadaEncryptor.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadaEncryptor.kt @@ -29,7 +29,8 @@ interface MetadataEncryptor { class MetadataEncryptorImpl( private val metadataSerializer: MetadataSerializer, -) : MetadataEncryptor, BaseSerializer() { +) : BaseSerializer(), + MetadataEncryptor { private val version: Int = METADATA_ENCRYPTION_V1 private val saltSize: Int = METADATA_SALT_SIZE @@ -73,12 +74,12 @@ class MetadataEncryptorImpl( val ciphertext = inputStream.readBytes() - return key.deriveDecryptionKeys(salt) + return key + .deriveDecryptionKeys(salt) .asSequence() .mapNotNull { decrypt(it, ciphertext) - } - .firstOrNull() ?: throw DecryptionException() + }.firstOrNull() ?: throw DecryptionException() } private fun decrypt( @@ -101,9 +102,7 @@ class MetadataEncryptorImpl( metadataSerializer.serialize(outputStream, data) } - private fun deserialize(inputStream: ByteArrayInputStream): Metadata { - return metadataSerializer.deserialize(inputStream) - } + private fun deserialize(inputStream: ByteArrayInputStream): Metadata = metadataSerializer.deserialize(inputStream) } class DecryptionException : Exception() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataKey.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataKey.kt index 43b0ed37e..9454cd792 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataKey.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataKey.kt @@ -37,21 +37,19 @@ class MetadataKey( return "zashi-metadata-" + fileIdentifier.toHexString() } - fun deriveEncryptionKey(salt: ByteArray): ChaCha20Poly1305Key { - return deriveKey( + fun deriveEncryptionKey(salt: ByteArray): ChaCha20Poly1305Key = + deriveKey( salt = salt, bytes = bytes.first() ) - } - fun deriveDecryptionKeys(salt: ByteArray): List { - return bytes.map { secretBytes -> + fun deriveDecryptionKeys(salt: ByteArray): List = + bytes.map { secretBytes -> deriveKey( salt = salt, bytes = secretBytes ) } - } private fun deriveKey( salt: ByteArray, @@ -78,13 +76,13 @@ class MetadataKey( selectedAccount: WalletAccount ): MetadataKey { val key = - DerivationTool.getInstance() + DerivationTool + .getInstance() .deriveAccountMetadataKey( seed = seedPhrase.toByteArray(), network = network, accountIndex = zashiAccount.hdAccountIndex, - ) - .derivePrivateUseMetadataKey( + ).derivePrivateUseMetadataKey( ufvk = when (selectedAccount) { is KeystoneAccount -> selectedAccount.sdkAccount.ufvk diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataSerializer.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataSerializer.kt index ce3d58623..7ef5d5a9c 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataSerializer.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/serialization/metada/MetadataSerializer.kt @@ -18,7 +18,5 @@ class MetadataSerializer { } @OptIn(ExperimentalSerializationApi::class) - fun deserialize(inputStream: InputStream): Metadata { - return Json.decodeFromStream(inputStream) - } + fun deserialize(inputStream: InputStream): Metadata = Json.decodeFromStream(inputStream) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/CreateKeystoneProposalPCZTEncoderUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/CreateKeystoneProposalPCZTEncoderUseCase.kt index 41019f712..87b98187e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/CreateKeystoneProposalPCZTEncoderUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/CreateKeystoneProposalPCZTEncoderUseCase.kt @@ -6,7 +6,5 @@ import com.sparrowwallet.hummingbird.UREncoder class CreateKeystoneProposalPCZTEncoderUseCase( private val keystoneProposalRepository: KeystoneProposalRepository, ) { - suspend operator fun invoke(): UREncoder { - return keystoneProposalRepository.createPCZTEncoder() - } + suspend operator fun invoke(): UREncoder = keystoneProposalRepository.createPCZTEncoder() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ExportTaxUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ExportTaxUseCase.kt index 927434a2f..7aed1e70c 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ExportTaxUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ExportTaxUseCase.kt @@ -34,7 +34,9 @@ class ExportTaxUseCase( suspend operator fun invoke() = withContext(Dispatchers.IO) { val previousYear = - Year.now().minusYears(1) + Year + .now() + .minusYears(1) .let { val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy") it.format(formatter) @@ -111,7 +113,8 @@ class ExportTaxUseCase( } private suspend fun getCsvEntries() = - transactionRepository.getTransactions() + transactionRepository + .getTransactions() .mapNotNull { transaction -> val previousYear = Year.now().minusYears(1) @@ -121,7 +124,8 @@ class ExportTaxUseCase( val dateString = date.let { val formatter = - DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss") + DateTimeFormatter + .ofPattern("MM/dd/yyyy HH:mm:ss") .withZone(ZoneOffset.UTC) formatter.format(date) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentFilteredTransactionsUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentFilteredTransactionsUseCase.kt index d1b705119..f6ff6f774 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentFilteredTransactionsUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentFilteredTransactionsUseCase.kt @@ -58,16 +58,17 @@ class GetCurrentFilteredTransactionsUseCase( val recipient = transactionRepository.getRecipients(transaction) if (recipient == null) { - metadataRepository.observeTransactionMetadataByTxId( - transaction.id.txIdString() - ).map { - FilterTransactionData( - transaction = transaction, - contact = null, - recipientAddress = null, - transactionMetadata = it - ) - } + metadataRepository + .observeTransactionMetadataByTxId( + transaction.id.txIdString() + ).map { + FilterTransactionData( + transaction = transaction, + contact = null, + recipientAddress = null, + transactionMetadata = it + ) + } } else { combine( addressBookRepository.observeContactByAddress(recipient), @@ -86,8 +87,7 @@ class GetCurrentFilteredTransactionsUseCase( } enhancedTransactions?.combineToFlow() ?: flowOf(null) - } - .shareIn( + }.shareIn( scope = scope, started = SharingStarted.WhileSubscribed(5.seconds, 5.seconds), replay = 1 @@ -125,8 +125,7 @@ class GetCurrentFilteredTransactionsUseCase( } ) } - } - .distinctUntilChanged() + }.distinctUntilChanged() @OptIn(ExperimentalCoroutinesApi::class) val result = @@ -140,15 +139,13 @@ class GetCurrentFilteredTransactionsUseCase( transactions ?.filter { transaction -> filterBySentReceived(filters, transaction) - } - ?.filter { transaction -> + }?.filter { transaction -> filterByGeneralFilters( filters = filters, transaction = transaction, restoreTimestamp = restoreTimestampDataSource.getOrCreate() ) - } - ?.map { transaction -> + }?.map { transaction -> ListTransactionData( transaction = transaction.transaction, metadata = transaction.transactionMetadata @@ -157,8 +154,7 @@ class GetCurrentFilteredTransactionsUseCase( } ) } - } - .distinctUntilChanged() + }.distinctUntilChanged() fun observe() = result @@ -199,8 +195,8 @@ class GetCurrentFilteredTransactionsUseCase( private fun filterBySentReceived( filters: List, transaction: FilterTransactionData - ): Boolean { - return if (filters.contains(TransactionFilter.SENT) || filters.contains(TransactionFilter.RECEIVED)) { + ): Boolean = + if (filters.contains(TransactionFilter.SENT) || filters.contains(TransactionFilter.RECEIVED)) { when { filters.contains(TransactionFilter.SENT) && transaction.transaction is SendTransaction -> true @@ -214,14 +210,15 @@ class GetCurrentFilteredTransactionsUseCase( } else { true } - } private fun isUnread( transaction: FilterTransactionData, restoreTimestamp: Instant, ): Boolean { val transactionDate = - transaction.transaction.timestamp?.atZone(ZoneId.systemDefault())?.toLocalDate() + transaction.transaction.timestamp + ?.atZone(ZoneId.systemDefault()) + ?.toLocalDate() ?: LocalDate.now() val hasMemo = transaction.transaction.memoCount > 0 @@ -236,25 +233,22 @@ class GetCurrentFilteredTransactionsUseCase( } } - private fun isBookmark(transaction: FilterTransactionData): Boolean { - return transaction.transactionMetadata?.isBookmarked ?: false - } + private fun isBookmark(transaction: FilterTransactionData): Boolean = + transaction.transactionMetadata?.isBookmarked ?: false - private fun hasNotes(transaction: FilterTransactionData): Boolean { - return transaction.transactionMetadata?.note != null - } + private fun hasNotes(transaction: FilterTransactionData): Boolean = transaction.transactionMetadata?.note != null private fun hasNotesWithFulltext( transaction: FilterTransactionData, fulltextFilter: String - ): Boolean { - return transaction.transactionMetadata?.note + ): Boolean = + transaction.transactionMetadata + ?.note ?.contains( fulltextFilter, ignoreCase = true ) ?: false - } private fun hasAmountWithFulltext( transaction: FilterTransactionData, @@ -267,16 +261,12 @@ class GetCurrentFilteredTransactionsUseCase( private fun hasAddressWithFulltext( transaction: FilterTransactionData, fulltextFilter: String - ): Boolean { - return transaction.recipientAddress?.contains(fulltextFilter, ignoreCase = true) ?: false - } + ): Boolean = transaction.recipientAddress?.contains(fulltextFilter, ignoreCase = true) ?: false private fun hasContactInAddressBookWithFulltext( transaction: FilterTransactionData, fulltextFilter: String - ): Boolean { - return transaction.contact?.name?.contains(fulltextFilter, ignoreCase = true) ?: false - } + ): Boolean = transaction.contact?.name?.contains(fulltextFilter, ignoreCase = true) ?: false private fun hasMemoInFilteredIds( memoTxIds: List?, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentTransactionsUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentTransactionsUseCase.kt index f2786a3d5..99c67744b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentTransactionsUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetCurrentTransactionsUseCase.kt @@ -25,15 +25,15 @@ class GetCurrentTransactionsUseCase( } else { transactions .map { - metadataRepository.observeTransactionMetadataByTxId(it.id.txIdString()) + metadataRepository + .observeTransactionMetadataByTxId(it.id.txIdString()) .mapLatest { metadata -> ListTransactionData( transaction = it, metadata = metadata ) } - } - .combineToFlow() + }.combineToFlow() } } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetProposalUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetProposalUseCase.kt index 5241b2e4c..661d68c5e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetProposalUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetProposalUseCase.kt @@ -12,10 +12,9 @@ class GetProposalUseCase( private val zashiProposalRepository: ZashiProposalRepository, private val accountDataSource: AccountDataSource, ) { - suspend operator fun invoke(): TransactionProposal { - return when (accountDataSource.getSelectedAccount()) { + suspend operator fun invoke(): TransactionProposal = + when (accountDataSource.getSelectedAccount()) { is KeystoneAccount -> keystoneProposalRepository.getTransactionProposal() is ZashiAccount -> zashiProposalRepository.getTransactionProposal() } - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetSelectedWalletAccountUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetSelectedWalletAccountUseCase.kt index ecc303a61..6bb1eb0df 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetSelectedWalletAccountUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetSelectedWalletAccountUseCase.kt @@ -2,6 +2,8 @@ package co.electriccoin.zcash.ui.common.usecase import co.electriccoin.zcash.ui.common.datasource.AccountDataSource -class GetSelectedWalletAccountUseCase(private val accountDataSource: AccountDataSource) { +class GetSelectedWalletAccountUseCase( + private val accountDataSource: AccountDataSource +) { suspend operator fun invoke() = accountDataSource.getSelectedAccount() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetTransactionDetailByIdUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetTransactionDetailByIdUseCase.kt index 19e8fb549..7e520537b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetTransactionDetailByIdUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetTransactionDetailByIdUseCase.kt @@ -31,7 +31,9 @@ class GetTransactionDetailByIdUseCase( @OptIn(ExperimentalCoroutinesApi::class) fun observe(txId: String) = transactionRepository - .observeTransaction(txId).filterNotNull().flatMapLatest { transaction -> + .observeTransaction(txId) + .filterNotNull() + .flatMapLatest { transaction -> channelFlow { launch { combine( @@ -66,7 +68,8 @@ class GetTransactionDetailByIdUseCase( // do nothing } } - }.distinctUntilChanged().flowOn(Dispatchers.Default) + }.distinctUntilChanged() + .flowOn(Dispatchers.Default) private suspend fun getWalletAddress(address: String?): WalletAddress? { if (address == null) return null diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetZashiAccountUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetZashiAccountUseCase.kt index 1ee0328ec..837ef6cbd 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetZashiAccountUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/GetZashiAccountUseCase.kt @@ -4,6 +4,8 @@ import co.electriccoin.zcash.ui.common.datasource.AccountDataSource import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first -class GetZashiAccountUseCase(private val accountDataSource: AccountDataSource) { +class GetZashiAccountUseCase( + private val accountDataSource: AccountDataSource +) { suspend operator fun invoke() = accountDataSource.zashiAccount.filterNotNull().first() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveFastestServersUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveFastestServersUseCase.kt index a82ef038c..041d0ba18 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveFastestServersUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveFastestServersUseCase.kt @@ -2,6 +2,8 @@ package co.electriccoin.zcash.ui.common.usecase import co.electriccoin.zcash.ui.common.repository.WalletRepository -class ObserveFastestServersUseCase(private val walletRepository: WalletRepository) { +class ObserveFastestServersUseCase( + private val walletRepository: WalletRepository +) { operator fun invoke() = walletRepository.fastestServers } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveOnAccountChangedUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveOnAccountChangedUseCase.kt index 7fa43b8a0..9854e009d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveOnAccountChangedUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveOnAccountChangedUseCase.kt @@ -2,6 +2,8 @@ package co.electriccoin.zcash.ui.common.usecase import co.electriccoin.zcash.ui.common.datasource.AccountDataSource -class ObserveOnAccountChangedUseCase(private val accountDataSource: AccountDataSource) { +class ObserveOnAccountChangedUseCase( + private val accountDataSource: AccountDataSource +) { operator fun invoke() = accountDataSource.onAccountChanged } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveProposalUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveProposalUseCase.kt index 6ff2ae429..dd936d880 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveProposalUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveProposalUseCase.kt @@ -25,8 +25,7 @@ class ObserveProposalUseCase( is KeystoneAccount -> keystoneProposalRepository.transactionProposal is ZashiAccount -> zashiProposalRepository.transactionProposal } - } - .filterNotNull() + }.filterNotNull() fun filterSendTransactions() = this() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedEndpointUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedEndpointUseCase.kt index 91f0d767c..a677f814d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedEndpointUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedEndpointUseCase.kt @@ -11,6 +11,5 @@ class ObserveSelectedEndpointUseCase( walletRepository.persistableWallet .map { it?.endpoint - } - .distinctUntilChanged() + }.distinctUntilChanged() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedWalletAccountUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedWalletAccountUseCase.kt index 20e1507a4..8a89cb0a3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedWalletAccountUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveSelectedWalletAccountUseCase.kt @@ -3,7 +3,9 @@ package co.electriccoin.zcash.ui.common.usecase import co.electriccoin.zcash.ui.common.datasource.AccountDataSource import kotlinx.coroutines.flow.filterNotNull -class ObserveSelectedWalletAccountUseCase(private val accountDataSource: AccountDataSource) { +class ObserveSelectedWalletAccountUseCase( + private val accountDataSource: AccountDataSource +) { operator fun invoke() = accountDataSource.selectedAccount fun require() = accountDataSource.selectedAccount.filterNotNull() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveWalletAccountsUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveWalletAccountsUseCase.kt index da584c13f..5549c28ef 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveWalletAccountsUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveWalletAccountsUseCase.kt @@ -3,7 +3,9 @@ package co.electriccoin.zcash.ui.common.usecase import co.electriccoin.zcash.ui.common.datasource.AccountDataSource import kotlinx.coroutines.flow.filterNotNull -class ObserveWalletAccountsUseCase(private val accountDataSource: AccountDataSource) { +class ObserveWalletAccountsUseCase( + private val accountDataSource: AccountDataSource +) { operator fun invoke() = accountDataSource.allAccounts fun require() = accountDataSource.allAccounts.filterNotNull() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveZashiAccountUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveZashiAccountUseCase.kt index d01874f54..baa7d3ba9 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveZashiAccountUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ObserveZashiAccountUseCase.kt @@ -2,6 +2,8 @@ package co.electriccoin.zcash.ui.common.usecase import co.electriccoin.zcash.ui.common.datasource.AccountDataSource -class ObserveZashiAccountUseCase(private val accountDataSource: AccountDataSource) { +class ObserveZashiAccountUseCase( + private val accountDataSource: AccountDataSource +) { operator fun invoke() = accountDataSource.zashiAccount } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystonePCZTUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystonePCZTUseCase.kt index 401434e9f..bb91c47b3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystonePCZTUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystonePCZTUseCase.kt @@ -72,13 +72,12 @@ abstract class BaseKeystoneScanner { abstract suspend fun onSuccess(ur: UR) - private fun decodeResult(result: String): DecodeResult { - return try { + private fun decodeResult(result: String): DecodeResult = + try { keystoneSDK.decodeQR(result) } catch (_: Exception) { throw InvalidKeystonePCZTQRException() } - } private suspend fun withSemaphore(block: suspend () -> T) = mutex.withLock { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneSignInRequestUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneSignInRequestUseCase.kt index 955b96723..8598ff506 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneSignInRequestUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneSignInRequestUseCase.kt @@ -26,4 +26,6 @@ class ParseKeystoneSignInRequestUseCase( } } -class InvalidKeystoneSignInQRException(cause: Throwable) : Exception(cause) +class InvalidKeystoneSignInQRException( + cause: Throwable +) : Exception(cause) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneUrToZashiAccountsUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneUrToZashiAccountsUseCase.kt index ef815750c..7a5db581d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneUrToZashiAccountsUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ParseKeystoneUrToZashiAccountsUseCase.kt @@ -15,9 +15,8 @@ class ParseKeystoneUrToZashiAccountsUseCase { } @Suppress("TooGenericExceptionCaught") - private fun getAccountsFromKeystone(ur: UR): ZcashAccounts { - return sdk.parseZcashAccounts(ur).also { + private fun getAccountsFromKeystone(ur: UR): ZcashAccounts = + sdk.parseZcashAccounts(ur).also { Twig.debug { "=========> progress: $it" } } - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/PersistEndpointUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/PersistEndpointUseCase.kt index 5b22302ca..71d1385d7 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/PersistEndpointUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/PersistEndpointUseCase.kt @@ -30,7 +30,8 @@ class PersistEndpointUseCase( } private suspend fun validateServerEndpoint(endpoint: LightWalletEndpoint) = - synchronizerProvider.getSynchronizer() + synchronizerProvider + .getSynchronizer() .validateServerEndpoint(application, endpoint) private fun persistWallet(persistableWallet: PersistableWallet) { @@ -38,4 +39,6 @@ class PersistEndpointUseCase( } } -class PersistEndpointException(message: String?) : Exception(message) +class PersistEndpointException( + message: String? +) : Exception(message) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendEmailUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendEmailUseCase.kt index 8c28b03c1..95d5a053c 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendEmailUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendEmailUseCase.kt @@ -20,13 +20,14 @@ class SendEmailUseCase( message: StringResource ) { val intent = - EmailUtil.newMailActivityIntent( - recipientAddress = address.getString(context), - messageSubject = subject.getString(context), - messageBody = message.getString(context) - ).apply { - flags = Intent.FLAG_ACTIVITY_NEW_TASK - } + EmailUtil + .newMailActivityIntent( + recipientAddress = address.getString(context), + messageSubject = subject.getString(context), + messageBody = message.getString(context) + ).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + } context.startActivity(intent) } @@ -53,21 +54,22 @@ class SendEmailUseCase( } val mailIntent = - EmailUtil.newMailActivityIntent( - context.getString(R.string.support_email_address), - context.getString(R.string.app_name), - fullMessage - ).apply { - flags = Intent.FLAG_ACTIVITY_NEW_TASK - } + EmailUtil + .newMailActivityIntent( + context.getString(R.string.support_email_address), + context.getString(R.string.app_name), + fullMessage + ).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + } runCatching { context.startActivity(mailIntent) } } - private fun List.toSupportString(context: Context): String { - return buildString { + private fun List.toSupportString(context: Context): String = + buildString { appendLine(context.getString(R.string.send_confirmation_multiple_report_statuses)) this@toSupportString.forEachIndexed { index, result -> @@ -104,5 +106,4 @@ class SendEmailUseCase( } } } - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendSupportEmailUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendSupportEmailUseCase.kt index 59372ad09..b35a7c31f 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendSupportEmailUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/SendSupportEmailUseCase.kt @@ -18,27 +18,28 @@ class SendSupportEmailUseCase( message: StringResource ) { val intent = - EmailUtil.newMailActivityIntent( - recipientAddress = context.getString(R.string.support_email_address), - messageSubject = context.getString(R.string.app_name), - messageBody = - buildString { - appendLine( - context.getString( - R.string.support_email_part_1, - emoji.encoding, - emoji.order.toString() + EmailUtil + .newMailActivityIntent( + recipientAddress = context.getString(R.string.support_email_address), + messageSubject = context.getString(R.string.app_name), + messageBody = + buildString { + appendLine( + context.getString( + R.string.support_email_part_1, + emoji.encoding, + emoji.order.toString() + ) ) - ) - appendLine() - appendLine(context.getString(R.string.support_email_part_2, message.getString(context))) - appendLine() - appendLine() - appendLine(getSupport().toSupportString(SupportInfoType.entries.toSet())) - } - ).apply { - flags = Intent.FLAG_ACTIVITY_NEW_TASK - } + appendLine() + appendLine(context.getString(R.string.support_email_part_2, message.getString(context))) + appendLine() + appendLine() + appendLine(getSupport().toSupportString(SupportInfoType.entries.toSet())) + } + ).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + } context.startActivity(intent) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ShareImageUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ShareImageUseCase.kt index 87255feb9..a7d06601e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ShareImageUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ShareImageUseCase.kt @@ -51,13 +51,14 @@ class ShareImageUseCase( // Save the bitmap to a temporary file in the cache directory val bitmapFile = withContext(Dispatchers.IO) { - File.createTempFile( - filePrefix, - fileSuffix, - cacheDir, - ).also { - it.storeBitmap(shareImageBitmap) - } + File + .createTempFile( + filePrefix, + fileSuffix, + cacheDir, + ).also { + it.storeBitmap(shareImageBitmap) + } } // Example of the expected temporary file path: diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactAddressUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactAddressUseCase.kt index ad0ed5584..565992e80 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactAddressUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactAddressUseCase.kt @@ -17,11 +17,13 @@ class ValidateContactAddressUseCase( val result = walletRepository.getSynchronizer().validateAddress(address) return when { result.isNotValid -> Result.Invalid - addressBookRepository.addressBook.filterNotNull().first().contacts + addressBookRepository.addressBook + .filterNotNull() + .first() + .contacts .filter { if (exclude == null) true else it != exclude - } - .any { it.address == address.trim() } -> Result.NotUnique + }.any { it.address == address.trim() } -> Result.NotUnique else -> Result.Valid } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactNameUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactNameUseCase.kt index f2c8e611c..885d971bf 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactNameUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/ValidateContactNameUseCase.kt @@ -13,11 +13,13 @@ class ValidateContactNameUseCase( exclude: AddressBookContact? = null ) = when { name.length > CONTACT_NAME_MAX_LENGTH -> Result.TooLong - addressBookRepository.addressBook.filterNotNull().first().contacts + addressBookRepository.addressBook + .filterNotNull() + .first() + .contacts .filter { if (exclude == null) true else it != exclude - } - .any { it.name == name.trim() } -> Result.NotUnique + }.any { it.name == name.trim() } -> Result.NotUnique else -> Result.Valid } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/Zip321ParseUriValidationUseCase.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/Zip321ParseUriValidationUseCase.kt index 3e99d349a..c0686b4cd 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/Zip321ParseUriValidationUseCase.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/usecase/Zip321ParseUriValidationUseCase.kt @@ -49,9 +49,13 @@ internal class Zip321ParseUriValidationUseCase( } internal sealed class Zip321ParseUriValidation { - data class Valid(val zip321Uri: String) : Zip321ParseUriValidation() + data class Valid( + val zip321Uri: String + ) : Zip321ParseUriValidation() - data class SingleAddress(val address: String) : Zip321ParseUriValidation() + data class SingleAddress( + val address: String + ) : Zip321ParseUriValidation() data object Invalid : Zip321ParseUriValidation() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/AuthenticationViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/AuthenticationViewModel.kt index dd7e3cd6b..a0ed5b142 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/AuthenticationViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/AuthenticationViewModel.kt @@ -298,13 +298,13 @@ class AuthenticationViewModel( ) promptInfo = - BiometricPrompt.PromptInfo.Builder() + BiometricPrompt.PromptInfo + .Builder() .setTitle( getApplication().applicationContext.run { getString(R.string.authentication_system_ui_title, getString(R.string.app_name)) } - ) - .setSubtitle( + ).setSubtitle( getApplication().applicationContext.run { getString( R.string.authentication_system_ui_subtitle, @@ -328,8 +328,7 @@ class AuthenticationViewModel( ) ) } - ) - .setConfirmationRequired(false) + ).setConfirmationRequired(false) .setAllowedAuthenticators(allowedAuthenticators) .build() @@ -342,8 +341,8 @@ class AuthenticationViewModel( } } - private fun getBiometricAuthenticationSupport(allowedAuthenticators: Int): BiometricSupportResult { - return when (biometricManager.canAuthenticate(allowedAuthenticators)) { + private fun getBiometricAuthenticationSupport(allowedAuthenticators: Int): BiometricSupportResult = + when (biometricManager.canAuthenticate(allowedAuthenticators)) { BiometricManager.BIOMETRIC_SUCCESS -> { Twig.debug { "Auth canAuthenticate BIOMETRIC_SUCCESS: App can authenticate using biometrics." } BiometricSupportResult.Success @@ -406,7 +405,6 @@ class AuthenticationViewModel( BiometricSupportResult.StatusUnexpected } } - } private fun booleanStateFlow(default: BooleanPreferenceDefault): StateFlow = flow { @@ -433,7 +431,10 @@ sealed class AuthenticationResult { data object Success : AuthenticationResult() - data class Error(val errorCode: Int, val errorMessage: String) : AuthenticationResult() + data class Error( + val errorCode: Int, + val errorMessage: String + ) : AuthenticationResult() data object Canceled : AuthenticationResult() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/WalletViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/WalletViewModel.kt index c9dc2f8dc..29d24baaa 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/WalletViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/viewmodel/WalletViewModel.kt @@ -193,9 +193,13 @@ sealed class SecretState { object NeedsWarning : SecretState() - class NeedsBackup(val persistableWallet: PersistableWallet) : SecretState() + class NeedsBackup( + val persistableWallet: PersistableWallet + ) : SecretState() - class Ready(val persistableWallet: PersistableWallet) : SecretState() + class Ready( + val persistableWallet: PersistableWallet + ) : SecretState() } /** @@ -223,7 +227,9 @@ sealed class SynchronizerError { null } - class Critical(val error: Throwable?) : SynchronizerError() { + class Critical( + val error: Throwable? + ) : SynchronizerError() { override fun getCauseMessage(): String? = error?.message override fun getStackTrace(limit: Int?): String? = @@ -234,7 +240,9 @@ sealed class SynchronizerError { } } - class Processor(val error: Throwable?) : SynchronizerError() { + class Processor( + val error: Throwable? + ) : SynchronizerError() { override fun getCauseMessage(): String? = error?.message override fun getStackTrace(limit: Int?): String? = @@ -245,7 +253,9 @@ sealed class SynchronizerError { } } - class Submission(val error: Throwable?) : SynchronizerError() { + class Submission( + val error: Throwable? + ) : SynchronizerError() { override fun getCauseMessage(): String? = error?.message override fun getStackTrace(limit: Int?): String? = @@ -256,7 +266,9 @@ sealed class SynchronizerError { } } - class Setup(val error: Throwable?) : SynchronizerError() { + class Setup( + val error: Throwable? + ) : SynchronizerError() { override fun getCauseMessage(): String? = error?.message override fun getStackTrace(limit: Int?): String? = @@ -267,7 +279,10 @@ sealed class SynchronizerError { } } - class Chain(val x: BlockHeight, val y: BlockHeight) : SynchronizerError() { + class Chain( + val x: BlockHeight, + val y: BlockHeight + ) : SynchronizerError() { override fun getCauseMessage(): String = "$x, $y" override fun getStackTrace(limit: Int?): String? = null diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/RefreshLock.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/RefreshLock.kt index f908f3db1..0bdddfffe 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/RefreshLock.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/RefreshLock.kt @@ -37,8 +37,7 @@ internal class RefreshLock( emitWithLock(true) } } - } - .distinctUntilChanged() + }.distinctUntilChanged() private suspend fun FlowCollector.emitWithLock(value: T) = mutex.withLock { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/StaleLock.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/StaleLock.kt index 36d13770c..a15c0da5e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/StaleLock.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/wallet/StaleLock.kt @@ -39,8 +39,7 @@ internal class StaleLock( emitWithLock(true) } } - } - .distinctUntilChanged() + }.distinctUntilChanged() private suspend fun FlowCollector.emitWithLock(value: T) = mutex.withLock { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt index b47bfe702..a6f9e5a77 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/fixture/ConfigInfoFixture.kt @@ -2,7 +2,6 @@ package co.electriccoin.zcash.ui.fixture import co.electriccoin.zcash.ui.screen.support.model.ConfigInfo import kotlinx.datetime.Instant -import kotlinx.datetime.toInstant object ConfigInfoFixture { val UPDATED_AT = Instant.parse("2023-01-15T08:38:45.415Z") diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/ExternalUrl.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/ExternalUrl.kt index 7d3d8ec37..1af0cb4b0 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/ExternalUrl.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/ExternalUrl.kt @@ -3,4 +3,6 @@ package co.electriccoin.zcash.ui.screen import kotlinx.serialization.Serializable @Serializable -data class ExternalUrl(val url: String) +data class ExternalUrl( + val url: String +) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/util/WebBrowserUtil.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/util/WebBrowserUtil.kt index b1ed771c7..a11dadece 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/util/WebBrowserUtil.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/util/WebBrowserUtil.kt @@ -12,7 +12,8 @@ object WebBrowserUtil { url: String ) { val intent = - CustomTabsIntent.Builder() + CustomTabsIntent + .Builder() .setUrlBarHidingEnabled(true) .setShowTitle(true) .setShareState(CustomTabsIntent.SHARE_STATE_OFF) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/view/AboutView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/view/AboutView.kt index 413a29c1e..91d42abaa 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/view/AboutView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/about/view/AboutView.kt @@ -76,8 +76,7 @@ fun About( .fillMaxHeight() .verticalScroll( rememberScrollState() - ) - .scaffoldScrollPadding(paddingValues) + ).scaffoldScrollPadding(paddingValues) ) } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/AndroidAccount.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/AndroidAccount.kt index b1187c7a2..b147dbff3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/AndroidAccount.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/AndroidAccount.kt @@ -123,13 +123,14 @@ internal fun WrapAccount( supportInfo = supportInfo?.toSupportString(SupportInfoType.entries.toSet()) ) val mailIntent = - EmailUtil.newMailActivityIntent( - context.getString(R.string.support_email_address), - context.getString(R.string.app_name), - fullMessage - ).apply { - flags = Intent.FLAG_ACTIVITY_NEW_TASK - } + EmailUtil + .newMailActivityIntent( + context.getString(R.string.support_email_address), + context.getString(R.string.app_name), + fullMessage + ).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + } runCatching { context.startActivity(mailIntent) }.onFailure { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt index f1d58d626..6b00fd43a 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt @@ -22,7 +22,11 @@ data class ZashiAccountListItemState( ) sealed interface AccountListItem { - data class Account(val state: ZashiAccountListItemState) : AccountListItem + data class Account( + val state: ZashiAccountListItemState + ) : AccountListItem - data class Other(val state: ZashiListItemState) : AccountListItem + data class Other( + val state: ZashiListItemState + ) : AccountListItem } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/viewmodel/AccountListViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/viewmodel/AccountListViewModel.kt index 0833e78d4..1acc79c24 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/viewmodel/AccountListViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/viewmodel/AccountListViewModel.kt @@ -38,60 +38,64 @@ class AccountListViewModel( @Suppress("SpreadOperator") val state = - observeWalletAccounts().map { accounts -> - val items = - listOfNotNull( - *accounts.orEmpty() - .map { account -> - AccountListItem.Account( - ZashiAccountListItemState( - title = account.name, + observeWalletAccounts() + .map { accounts -> + val items = + listOfNotNull( + *accounts + .orEmpty() + .map { account -> + AccountListItem.Account( + ZashiAccountListItemState( + title = account.name, + subtitle = + stringRes( + "${account.unified.address.address.take(ADDRESS_MAX_LENGTH)}...", + ), + icon = + when (account) { + is KeystoneAccount -> R.drawable.ic_item_keystone + is ZashiAccount -> R.drawable.ic_item_zashi + }, + isSelected = account.isSelected, + onClick = { onAccountClicked(account) } + ) + ) + }.toTypedArray(), + AccountListItem + .Other( + ZashiListItemState( + title = + stringRes(co.electriccoin.zcash.ui.R.string.account_list_keystone_promo_title), subtitle = stringRes( - "${account.unified.address.address.take(ADDRESS_MAX_LENGTH)}...", + co.electriccoin.zcash.ui.R.string.account_list_keystone_promo_subtitle, ), - icon = - when (account) { - is KeystoneAccount -> R.drawable.ic_item_keystone - is ZashiAccount -> R.drawable.ic_item_zashi - }, - isSelected = account.isSelected, - onClick = { onAccountClicked(account) } + onClick = ::onShowKeystonePromoClicked ) - ) - }.toTypedArray(), - AccountListItem.Other( - ZashiListItemState( - title = stringRes(co.electriccoin.zcash.ui.R.string.account_list_keystone_promo_title), - subtitle = - stringRes( - co.electriccoin.zcash.ui.R.string.account_list_keystone_promo_subtitle, - ), - onClick = ::onShowKeystonePromoClicked - ) - ).takeIf { - accounts.orEmpty().none { it is KeystoneAccount } - } - ) + ).takeIf { + accounts.orEmpty().none { it is KeystoneAccount } + } + ) - AccountListState( - items = items, - isLoading = accounts == null, - onBottomSheetHidden = ::onBottomSheetHidden, - onBack = ::onBack, - addWalletButton = - ButtonState( - text = stringRes(co.electriccoin.zcash.ui.R.string.account_list_keystone_primary), - onClick = ::onAddWalletButtonClicked - ).takeIf { - accounts.orEmpty().none { it is KeystoneAccount } - } + AccountListState( + items = items, + isLoading = accounts == null, + onBottomSheetHidden = ::onBottomSheetHidden, + onBack = ::onBack, + addWalletButton = + ButtonState( + text = stringRes(co.electriccoin.zcash.ui.R.string.account_list_keystone_primary), + onClick = ::onAddWalletButtonClicked + ).takeIf { + accounts.orEmpty().none { it is KeystoneAccount } + } + ) + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + initialValue = null ) - }.stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - initialValue = null - ) private fun onShowKeystonePromoClicked() = viewModelScope.launch { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/model/AddressBookState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/model/AddressBookState.kt index 958d2949c..5669244bd 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/model/AddressBookState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/model/AddressBookState.kt @@ -15,7 +15,9 @@ data class AddressBookState( ) sealed interface AddressBookItem : Itemizable { - data class Title(val title: StringResource) : AddressBookItem { + data class Title( + val title: StringResource + ) : AddressBookItem { override val contentType = "Title" override val key = Empty.contentType } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/AddressBookViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/AddressBookViewModel.kt index 475e59266..9d9b6cc75 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/AddressBookViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/AddressBookViewModel.kt @@ -41,17 +41,18 @@ class AddressBookViewModel( AddressBookState( isLoading = contacts == null, items = - contacts?.map { contact -> - AddressBookItem.Contact( - ZashiContactListItemState( - icon = getContactInitials(contact), - isShielded = false, - name = stringRes(contact.name), - address = stringRes("${contact.address.take(ADDRESS_MAX_LENGTH)}..."), - onClick = { onContactClick(contact) } + contacts + ?.map { contact -> + AddressBookItem.Contact( + ZashiContactListItemState( + icon = getContactInitials(contact), + isShielded = false, + name = stringRes(contact.name), + address = stringRes("${contact.address.take(ADDRESS_MAX_LENGTH)}..."), + onClick = { onContactClick(contact) } + ) ) - ) - }.orEmpty(), + }.orEmpty(), onBack = ::onBack, manualButton = ButtonState( @@ -72,8 +73,7 @@ class AddressBookViewModel( .split(" ") .mapNotNull { part -> part.takeIf { it.isNotEmpty() }?.first()?.toString() - } - .take(2) + }.take(2) .joinToString(separator = "") ) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/SelectRecipientViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/SelectRecipientViewModel.kt index 479dadb8c..fc5970f4c 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/SelectRecipientViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/addressbook/viewmodel/SelectRecipientViewModel.kt @@ -57,25 +57,26 @@ class SelectRecipientViewModel( val accountItems = listOf( AddressBookItem.Title(stringRes(R.string.address_book_multiple_wallets_title)), - *accounts.map { account -> - AddressBookItem.Contact( - ZashiContactListItemState( - icon = - imageRes( - when (account) { - is KeystoneAccount -> - co.electriccoin.zcash.ui.design.R.drawable.ic_item_keystone - is ZashiAccount -> - co.electriccoin.zcash.ui.design.R.drawable.ic_item_zashi - } - ), - isShielded = false, - name = account.name, - address = stringRes("${account.unified.address.address.take(ADDRESS_MAX_LENGTH)}..."), - onClick = { onWalletAccountClick(account) } + *accounts + .map { account -> + AddressBookItem.Contact( + ZashiContactListItemState( + icon = + imageRes( + when (account) { + is KeystoneAccount -> + co.electriccoin.zcash.ui.design.R.drawable.ic_item_keystone + is ZashiAccount -> + co.electriccoin.zcash.ui.design.R.drawable.ic_item_zashi + } + ), + isShielded = false, + name = account.name, + address = stringRes("${account.unified.address.address.take(ADDRESS_MAX_LENGTH)}..."), + onClick = { onWalletAccountClick(account) } + ) ) - ) - }.toTypedArray() + }.toTypedArray() ) val addressBookItems = @@ -84,17 +85,18 @@ class SelectRecipientViewModel( } else { listOf( AddressBookItem.Title(stringRes(R.string.address_book_multiple_wallets_contacts_title)), - *contacts.map { contact -> - AddressBookItem.Contact( - ZashiContactListItemState( - icon = getContactInitials(contact), - isShielded = false, - name = stringRes(contact.name), - address = stringRes("${contact.address.take(ADDRESS_MAX_LENGTH)}..."), - onClick = { onContactClick(contact) } + *contacts + .map { contact -> + AddressBookItem.Contact( + ZashiContactListItemState( + icon = getContactInitials(contact), + isShielded = false, + name = stringRes(contact.name), + address = stringRes("${contact.address.take(ADDRESS_MAX_LENGTH)}..."), + onClick = { onContactClick(contact) } + ) ) - ) - }.toTypedArray() + }.toTypedArray() ) } @@ -116,21 +118,22 @@ class SelectRecipientViewModel( ) } - private fun createStateWithoutAccounts(contacts: List?): AddressBookState { - return AddressBookState( + private fun createStateWithoutAccounts(contacts: List?): AddressBookState = + AddressBookState( isLoading = contacts == null, items = - contacts?.map { contact -> - AddressBookItem.Contact( - ZashiContactListItemState( - icon = getContactInitials(contact), - isShielded = false, - name = stringRes(contact.name), - address = stringRes("${contact.address.take(ADDRESS_MAX_LENGTH)}..."), - onClick = { onContactClick(contact) } + contacts + ?.map { contact -> + AddressBookItem.Contact( + ZashiContactListItemState( + icon = getContactInitials(contact), + isShielded = false, + name = stringRes(contact.name), + address = stringRes("${contact.address.take(ADDRESS_MAX_LENGTH)}..."), + onClick = { onContactClick(contact) } + ) ) - ) - }.orEmpty(), + }.orEmpty(), onBack = ::onBack, manualButton = ButtonState( @@ -144,7 +147,6 @@ class SelectRecipientViewModel( ), title = stringRes(R.string.address_book_select_recipient_title) ) - } private fun onWalletAccountClick(account: WalletAccount) = viewModelScope.launch { @@ -152,17 +154,15 @@ class SelectRecipientViewModel( navigationRouter.back() } - private fun getContactInitials(contact: AddressBookContact): ImageResource { - return imageRes( + private fun getContactInitials(contact: AddressBookContact): ImageResource = + imageRes( contact.name .split(" ") .mapNotNull { part -> part.takeIf { it.isNotEmpty() }?.first()?.toString() - } - .take(2) + }.take(2) .joinToString(separator = "") ) - } private fun onBack() = navigationRouter.back() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/AndroidAdvancedSettings.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/AndroidAdvancedSettings.kt index 578b34973..bd17b5284 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/AndroidAdvancedSettings.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/AndroidAdvancedSettings.kt @@ -26,13 +26,14 @@ internal fun WrapAdvancedSettings( originalState.copy( deleteButton = originalState.deleteButton.copy(onClick = goDeleteWallet), items = - originalState.items.mapIndexed { index, item -> - when (index) { - 0 -> item.copy(onClick = goSeedRecovery) - 1 -> item.copy(onClick = goExportPrivateData) - else -> item - } - }.toImmutableList() + originalState.items + .mapIndexed { index, item -> + when (index) { + 0 -> item.copy(onClick = goSeedRecovery) + 1 -> item.copy(onClick = goExportPrivateData) + else -> item + } + }.toImmutableList() ) BackHandler { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/viewmodel/AdvancedSettingsViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/viewmodel/AdvancedSettingsViewModel.kt index 7be2b82a0..44a014ba2 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/viewmodel/AdvancedSettingsViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/advancedsettings/viewmodel/AdvancedSettingsViewModel.kt @@ -27,11 +27,11 @@ class AdvancedSettingsViewModel( private val navigateToTaxExport: NavigateToTaxExportUseCase, ) : ViewModel() { val state: StateFlow = - getWalletRestoringState.observe() + getWalletRestoringState + .observe() .map { walletState -> createState(walletState) - } - .stateIn( + }.stateIn( scope = viewModelScope, started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), initialValue = createState(getWalletRestoringState.observe().value) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt index efc818793..05cde1899 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt @@ -117,7 +117,8 @@ private fun WrapDeleteWalletAuth( val authenticationResult = authenticationViewModel.authenticationResult - .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None).value + .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None) + .value when (authenticationResult) { AuthenticationResult.None -> { @@ -138,7 +139,8 @@ private fun WrapDeleteWalletAuth( Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() onFailed() - Toast.makeText(activity, activity.getString(R.string.authentication_toast_failed), Toast.LENGTH_SHORT) + Toast + .makeText(activity, activity.getString(R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() } is AuthenticationResult.Error -> { @@ -190,7 +192,8 @@ private fun WrapAppExportPrivateDataAuth( val authenticationResult = authenticationViewModel.authenticationResult - .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None).value + .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None) + .value when (authenticationResult) { AuthenticationResult.None -> { @@ -211,7 +214,8 @@ private fun WrapAppExportPrivateDataAuth( Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() onFailed() - Toast.makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) + Toast + .makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() } is AuthenticationResult.Error -> { @@ -263,7 +267,8 @@ private fun WrapSeedRecoveryAuth( val authenticationResult = authenticationViewModel.authenticationResult - .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None).value + .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None) + .value when (authenticationResult) { AuthenticationResult.None -> { @@ -284,7 +289,8 @@ private fun WrapSeedRecoveryAuth( Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() onFailed() - Toast.makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) + Toast + .makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() } is AuthenticationResult.Error -> { @@ -337,7 +343,8 @@ private fun WrapSendFundsAuth( val authenticationResult = authenticationViewModel.authenticationResult - .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None).value + .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None) + .value when (authenticationResult) { AuthenticationResult.None -> { @@ -358,7 +365,8 @@ private fun WrapSendFundsAuth( Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() onFailed() - Toast.makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) + Toast + .makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() } is AuthenticationResult.Error -> { @@ -427,7 +435,8 @@ private fun WrapAppAccessAuth( val authenticationResult = authenticationViewModel.authenticationResult - .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None).value + .collectAsStateWithLifecycle(initialValue = AuthenticationResult.None) + .value when (authenticationResult) { AuthenticationResult.None -> { @@ -443,7 +452,8 @@ private fun WrapAppAccessAuth( AuthenticationResult.Canceled -> { Twig.info { "Authentication result: canceled: shutting down" } authenticationViewModel.resetAuthenticationResult() - Toast.makeText(activity, stringResource(id = R.string.authentication_toast_canceled), Toast.LENGTH_SHORT) + Toast + .makeText(activity, stringResource(id = R.string.authentication_toast_canceled), Toast.LENGTH_SHORT) .show() onCancel() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/view/WelcomeAnimation.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/view/WelcomeAnimation.kt index f89a8c4df..66fc3db59 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/view/WelcomeAnimation.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/view/WelcomeAnimation.kt @@ -123,8 +123,7 @@ fun WelcomeScreenView( .verticalScroll( state = rememberScrollState(), enabled = false - ) - .wrapContentSize() + ).wrapContentSize() ) ) { AnimatedVisibility( diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/AndroidBalances.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/AndroidBalances.kt index 78a535035..226743b3b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/AndroidBalances.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/AndroidBalances.kt @@ -285,13 +285,14 @@ internal fun WrapBalances( supportInfo = supportInfo?.toSupportString(SupportInfoType.entries.toSet()) ) val mailIntent = - EmailUtil.newMailActivityIntent( - context.getString(R.string.support_email_address), - context.getString(R.string.app_name), - fullMessage - ).apply { - flags = Intent.FLAG_ACTIVITY_NEW_TASK - } + EmailUtil + .newMailActivityIntent( + context.getString(R.string.support_email_address), + context.getString(R.string.app_name), + fullMessage + ).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + } runCatching { context.startActivity(mailIntent) }.onFailure { @@ -313,14 +314,13 @@ internal fun WrapBalances( private fun updateTransparentBalanceState( currentShieldState: ShieldState, walletSnapshot: WalletSnapshot? -): ShieldState { - return when { +): ShieldState = + when { (walletSnapshot == null) -> currentShieldState (walletSnapshot.transparentBalance >= Zatoshi(DEFAULT_SHIELDING_THRESHOLD) && currentShieldState.isEnabled()) -> ShieldState.Available else -> currentShieldState } -} private fun openPlayStoreAppSite( context: Context, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/model/WalletDisplayValues.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/model/WalletDisplayValues.kt index 6ec5683d4..eabf153a2 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/model/WalletDisplayValues.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/model/WalletDisplayValues.kt @@ -119,11 +119,17 @@ sealed class StatusAction { data object AppUpdate : StatusAction() - sealed class Detailed(open val details: String) : StatusAction() + sealed class Detailed( + open val details: String + ) : StatusAction() - data class Disconnected(override val details: String) : Detailed(details) + data class Disconnected( + override val details: String + ) : Detailed(details) - data class Stopped(override val details: String) : Detailed(details) + data class Stopped( + override val details: String + ) : Detailed(details) data class Error( override val details: String, @@ -136,8 +142,8 @@ fun StatusAction.isReportable() = this is StatusAction.Error && fullStackTrace ! private fun getFiatCurrencyRateValue( context: Context, fiatCurrencyAmountState: FiatCurrencyConversionRateState -): String { - return fiatCurrencyAmountState.let { state -> +): String = + fiatCurrencyAmountState.let { state -> when (state) { is FiatCurrencyConversionRateState.Current -> state.formattedFiatValue is FiatCurrencyConversionRateState.Stale -> state.formattedFiatValue @@ -146,4 +152,3 @@ private fun getFiatCurrencyRateValue( } } } -} diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerState.kt index 955dfa2b9..348927a23 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerState.kt @@ -54,5 +54,8 @@ sealed interface ServerState : Itemizable { sealed interface ServerDialogState { val state: AlertDialogState - data class Validation(override val state: AlertDialogState, val reason: StringResource?) : ServerDialogState + data class Validation( + override val state: AlertDialogState, + val reason: StringResource? + ) : ServerDialogState } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerView.kt index 15e06dd1c..c4edca332 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerView.kt @@ -183,7 +183,10 @@ private fun ErrorDialog(dialogState: ServerDialogState) { } } }, - confirmButtonText = dialogState.state.confirmButtonState?.text?.getValue(), + confirmButtonText = + dialogState.state.confirmButtonState + ?.text + ?.getValue(), onConfirmButtonClick = dialogState.state.confirmButtonState?.onClick ) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerViewModel.kt index 4c9b8fbae..75bbaee11 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chooseserver/ChooseServerViewModel.kt @@ -59,8 +59,7 @@ class ChooseServerViewModel( fastestServers.servers ?.map { endpoint -> createDefaultServerState(endpoint, userEndpointSelection, selectedEndpoint) - } - .orEmpty(), + }.orEmpty(), isLoading = fastestServers.isLoading, retryButton = ButtonState( @@ -97,16 +96,13 @@ class ChooseServerViewModel( getAvailableServers() .filter { !fastest.servers.orEmpty().contains(it) - } - .map { endpoint -> + }.map { endpoint -> createDefaultServerState(endpoint, userEndpointSelection, selectedEndpoint) - } - .toMutableList() + }.toMutableList() .apply { val index = 1.coerceIn(0, size.coerceAtLeast(0)) add(index, customEndpointState) - } - .toList() + }.toList() ) } @@ -133,7 +129,8 @@ class ChooseServerViewModel( val isSelectedEndpointCustom = !getAvailableServers().contains(selectedEndpoint) when { isSelectedEndpointCustom && userCustomEndpointText == null -> false - isSelectedEndpointCustom && selectedEndpoint?.generateUserString() != + isSelectedEndpointCustom && + selectedEndpoint?.generateUserString() != userCustomEndpointText -> true else -> false } @@ -153,8 +150,12 @@ class ChooseServerViewModel( } val state = - combine(fastest, other, buttonState, dialogState) { fastest, all, - buttonState, dialogState -> + combine(fastest, other, buttonState, dialogState) { + fastest, + all, + buttonState, + dialogState + -> if (all == null) { // not loaded yet return@combine null } @@ -272,8 +273,8 @@ class ChooseServerViewModel( * @return an endpoint selected by user or null if user didn't select any new endpoint explicitly or if selected * custom endpoint is invalid */ - private fun getUserEndpointSelectionOrShowError(): LightWalletEndpoint? { - return when (val selection = userEndpointSelection.value) { + private fun getUserEndpointSelectionOrShowError(): LightWalletEndpoint? = + when (val selection = userEndpointSelection.value) { is Selection.Custom -> { val endpoint = userCustomEndpointText.value val validated = validateEndpoint(endpoint.orEmpty()) @@ -286,7 +287,6 @@ class ChooseServerViewModel( is Selection.Endpoint -> selection.endpoint null -> null } - } private fun showValidationErrorDialog(reason: String?) { dialogState.update { @@ -305,14 +305,15 @@ class ChooseServerViewModel( } } - private fun LightWalletEndpoint.generateUserString(): String { - return stringRes(resource = R.string.choose_server_full_server_name_text_field, host, port) + private fun LightWalletEndpoint.generateUserString(): String = + stringRes(resource = R.string.choose_server_full_server_name_text_field, host, port) .getString(getApplication()) - } } private sealed interface Selection { data object Custom : Selection - data class Endpoint(val endpoint: LightWalletEndpoint) : Selection + data class Endpoint( + val endpoint: LightWalletEndpoint + ) : Selection } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/AddContactViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/AddContactViewModel.kt index 5dbed3adf..f3f0b42ec 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/AddContactViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/AddContactViewModel.kt @@ -34,25 +34,26 @@ class AddContactViewModel( @OptIn(ExperimentalCoroutinesApi::class) private val contactAddressError = - contactAddress.mapLatest { address -> - if (address.isEmpty()) { - null - } else { - when (validateContactAddress(address)) { - ValidateContactAddressUseCase.Result.Invalid -> - stringRes(R.string.contact_address_error_invalid) + contactAddress + .mapLatest { address -> + if (address.isEmpty()) { + null + } else { + when (validateContactAddress(address)) { + ValidateContactAddressUseCase.Result.Invalid -> + stringRes(R.string.contact_address_error_invalid) - ValidateContactAddressUseCase.Result.NotUnique -> - stringRes(R.string.contact_address_error_not_unique) + ValidateContactAddressUseCase.Result.NotUnique -> + stringRes(R.string.contact_address_error_not_unique) - ValidateContactAddressUseCase.Result.Valid -> null + ValidateContactAddressUseCase.Result.Valid -> null + } } - } - }.stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - initialValue = null - ) + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + initialValue = null + ) private val contactAddressState = combine(contactAddress, contactAddressError) { address, contactAddressError -> @@ -67,26 +68,27 @@ class AddContactViewModel( @OptIn(ExperimentalCoroutinesApi::class) private val contactNameError = - contactName.mapLatest { name -> - if (name.isEmpty()) { - null - } else { - when (validateContactName(name)) { - ValidateContactNameUseCase.Result.TooLong -> - stringRes(R.string.contact_name_error_too_long) + contactName + .mapLatest { name -> + if (name.isEmpty()) { + null + } else { + when (validateContactName(name)) { + ValidateContactNameUseCase.Result.TooLong -> + stringRes(R.string.contact_name_error_too_long) - ValidateContactNameUseCase.Result.NotUnique -> - stringRes(R.string.contact_name_error_not_unique) + ValidateContactNameUseCase.Result.NotUnique -> + stringRes(R.string.contact_name_error_not_unique) - ValidateContactNameUseCase.Result.Valid -> - null + ValidateContactNameUseCase.Result.Valid -> + null + } } - } - }.stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - initialValue = null - ) + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + initialValue = null + ) private val contactNameState = combine(contactName, contactNameError) { name, contactNameError -> diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/UpdateContactViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/UpdateContactViewModel.kt index 8ba1ee7cc..e3667adb1 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/UpdateContactViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/contact/viewmodel/UpdateContactViewModel.kt @@ -102,8 +102,12 @@ class UpdateContactViewModel( } private val updateButtonState = - combine(contactAddressState, contactNameState, isUpdatingContact, contact) { address, name, - isUpdatingContact, contact -> + combine(contactAddressState, contactNameState, isUpdatingContact, contact) { + address, + name, + isUpdatingContact, + contact + -> ButtonState( text = stringRes(R.string.update_contact_primary_btn), isEnabled = diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/widget/StyledExchangeRateOptIn.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/widget/StyledExchangeRateOptIn.kt index 45a0178df..1ca6fff4b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/widget/StyledExchangeRateOptIn.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/widget/StyledExchangeRateOptIn.kt @@ -91,7 +91,9 @@ fun StyledExchangeOptIn( ) { scope -> Text( text = stringResource(R.string.exchange_rate_opt_in_primary_btn), - style = ZcashTheme.typography.primary.titleSmall.copy(fontWeight = FontWeight.SemiBold), + style = + ZcashTheme.typography.primary.titleSmall + .copy(fontWeight = FontWeight.SemiBold), fontSize = 14.sp ) scope.Loading() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/view/FeedbackView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/view/FeedbackView.kt index 01b632ef7..02384eba3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/view/FeedbackView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/view/FeedbackView.kt @@ -225,13 +225,11 @@ private fun Emoji( width = 2.5.dp, color = if (isSelected) ZashiColors.Text.textPrimary else Color.Transparent, shape = RoundedCornerShape(ZashiDimensions.Radius.radiusXl) - ) - .padding(4.5.dp) + ).padding(4.5.dp) .background( color = ZashiColors.Surfaces.bgSecondary, shape = RoundedCornerShape(8.dp) - ) - .clip(RoundedCornerShape(8.dp)) + ).clip(RoundedCornerShape(8.dp)) .clickable(onClick = onClick), contentAlignment = Alignment.Center ) { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/viewmodel/FeedbackViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/viewmodel/FeedbackViewModel.kt index a41c9ec24..14098600d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/viewmodel/FeedbackViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/feedback/viewmodel/FeedbackViewModel.kt @@ -55,23 +55,24 @@ class FeedbackViewModel( }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), null) val dialogState = - isDialogShown.map { isShown -> - AlertDialogState( - title = stringRes(R.string.support_confirmation_dialog_title), - text = stringRes(R.string.support_confirmation_explanation), - confirmButtonState = - ButtonState( - text = stringRes(R.string.support_confirmation_dialog_ok), - onClick = ::onConfirmSendFeedback - ), - dismissButtonState = - ButtonState( - text = stringRes(R.string.support_confirmation_dialog_cancel), - onClick = { isDialogShown.update { false } } - ), - onDismissRequest = { isDialogShown.update { false } } - ).takeIf { isShown } - }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), null) + isDialogShown + .map { isShown -> + AlertDialogState( + title = stringRes(R.string.support_confirmation_dialog_title), + text = stringRes(R.string.support_confirmation_explanation), + confirmButtonState = + ButtonState( + text = stringRes(R.string.support_confirmation_dialog_ok), + onClick = ::onConfirmSendFeedback + ), + dismissButtonState = + ButtonState( + text = stringRes(R.string.support_confirmation_dialog_cancel), + onClick = { isDialogShown.update { false } } + ), + onDismissRequest = { isDialogShown.update { false } } + ).takeIf { isShown } + }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), null) private fun onConfirmSendFeedback() = viewModelScope.launch { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt index c7660e021..9c005da44 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt @@ -222,7 +222,9 @@ internal fun WrapHome( * Enum of the Home screen sub-screens */ @Suppress("MagicNumber") -enum class HomeScreenIndex(val pageIndex: Int) { +enum class HomeScreenIndex( + val pageIndex: Int +) { ACCOUNT(0), SEND(1), RECEIVE(2), diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt index 3a6dad0aa..c1a83361e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt @@ -170,8 +170,7 @@ private fun HomeContent( .padding( horizontal = ZcashTheme.dimens.spacingXtiny, vertical = ZcashTheme.dimens.spacingDefault - ) - .testTag(item.testTag) + ).testTag(item.testTag) ) } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidIntegrations.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidIntegrations.kt index 3b6522213..c87026d9e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidIntegrations.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidIntegrations.kt @@ -24,11 +24,11 @@ internal fun WrapIntegrations() { LaunchedEffect(Unit) { viewModel.flexaNavigationCommand.collect { - Flexa.buildSpend() + Flexa + .buildSpend() .onTransactionRequest { viewModel.onFlexaResultCallback(it) - } - .build() + }.build() .open(activity) } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/viewmodel/IntegrationsViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/viewmodel/IntegrationsViewModel.kt index 5a0bb9f1a..2eaf6021e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/viewmodel/IntegrationsViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/viewmodel/IntegrationsViewModel.kt @@ -157,7 +157,8 @@ class IntegrationsViewModel( when (val output = result.first) { is SubmitResult.Success -> { Twig.debug { "Transaction successful $result" } - Flexa.buildSpend() + Flexa + .buildSpend() .transactionSent( commerceSessionId = transaction.getOrNull()?.commerceSessionId.orEmpty(), txSignature = result.second.orEmpty() @@ -165,7 +166,8 @@ class IntegrationsViewModel( } is SubmitResult.SimpleTrxFailure.SimpleTrxFailureGrpc -> { Twig.warn { "Transaction grpc failure $result" } - Flexa.buildSpend() + Flexa + .buildSpend() .transactionSent( commerceSessionId = transaction.getOrNull()?.commerceSessionId.orEmpty(), txSignature = output.result.txIdString() @@ -212,13 +214,14 @@ class IntegrationsViewModel( val submitResults = mutableListOf() return runCatching { - synchronizer.createProposedTransactions( - proposal = proposal, - usk = spendingKey - ).collect { submitResult -> - Twig.info { "Transaction submit result: $submitResult" } - submitResults.add(submitResult) - } + synchronizer + .createProposedTransactions( + proposal = proposal, + usk = spendingKey + ).collect { submitResult -> + Twig.info { "Transaction submit result: $submitResult" } + submitResults.add(submitResult) + } if (submitResults.find { it is TransactionSubmitResult.Failure } != null) { if (submitResults.size == 1) { // The first transaction submission failed - user might just be able to re-submit the transaction @@ -237,8 +240,10 @@ class IntegrationsViewModel( } else { // All transaction submissions were successful SubmitResult.Success(emptyList()) to - submitResults.filterIsInstance() - .map { it.txIdString() }.firstOrNull() + submitResults + .filterIsInstance() + .map { it.txIdString() } + .firstOrNull() } }.onSuccess { Twig.debug { "Transactions submitted successfully" } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt index e7e42ee9c..3cdff1836 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt @@ -47,29 +47,31 @@ class QrCodeViewModel( private val versionInfo by lazy { getVersionInfo() } internal val state = - observeSelectedWalletAccount.require().map { account -> - val walletAddress = account.fromReceiveAddressType(ReceiveAddressType.fromOrdinal(addressTypeOrdinal)) + observeSelectedWalletAccount + .require() + .map { account -> + val walletAddress = account.fromReceiveAddressType(ReceiveAddressType.fromOrdinal(addressTypeOrdinal)) - if (walletAddress == null) { - QrCodeState.Loading - } else { - QrCodeState.Prepared( - walletAddress = walletAddress, - onAddressCopy = { address -> onAddressCopyClick(address) }, - onQrCodeShare = { onQrCodeShareClick(it, versionInfo) }, - onBack = ::onBack, - qrCodeType = - when (account) { - is KeystoneAccount -> QrCodeType.KEYSTONE - is ZashiAccount -> QrCodeType.ZASHI - } - ) - } - }.stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - initialValue = QrCodeState.Loading - ) + if (walletAddress == null) { + QrCodeState.Loading + } else { + QrCodeState.Prepared( + walletAddress = walletAddress, + onAddressCopy = { address -> onAddressCopyClick(address) }, + onQrCodeShare = { onQrCodeShareClick(it, versionInfo) }, + onBack = ::onBack, + qrCodeType = + when (account) { + is KeystoneAccount -> QrCodeType.KEYSTONE + is ZashiAccount -> QrCodeType.ZASHI + } + ) + } + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + initialValue = QrCodeState.Loading + ) val shareResultCommand = MutableSharedFlow() @@ -117,13 +119,14 @@ fun shareData( // Save the bitmap to a temporary file in the cache directory val bitmapFile = withContext(Dispatchers.IO) { - File.createTempFile( - TEMP_FILE_NAME_PREFIX, - TEMP_FILE_NAME_SUFFIX, - cacheDir, - ).also { - it.storeBitmap(qrImageBitmap) - } + File + .createTempFile( + TEMP_FILE_NAME_PREFIX, + TEMP_FILE_NAME_SUFFIX, + cacheDir, + ).also { + it.storeBitmap(qrImageBitmap) + } } // Example of the expected temporary file path: diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt index 823a1885a..7ebef44f9 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt @@ -139,8 +139,7 @@ private fun AddressPanel( ZashiColors.Utility.Gray.utilityGray50 }, RoundedCornerShape(ZashiDimensions.Radius.radius3xl) - ) - .clip(RoundedCornerShape(ZashiDimensions.Radius.radius3xl)) + ).clip(RoundedCornerShape(ZashiDimensions.Radius.radius3xl)) .clickable(onClick = state.onClick) .padding(all = ZcashTheme.dimens.spacingLarge) ) { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/OnAmount.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/OnAmount.kt index 9ba676f28..4c54c66a8 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/OnAmount.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/OnAmount.kt @@ -1,9 +1,13 @@ package co.electriccoin.zcash.ui.screen.request.model internal sealed class OnAmount { - data class Number(val number: Int) : OnAmount() + data class Number( + val number: Int + ) : OnAmount() - data class Separator(val separator: String) : OnAmount() + data class Separator( + val separator: String + ) : OnAmount() data object Delete : OnAmount() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/Request.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/Request.kt index a3efc15da..02667b73c 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/Request.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/Request.kt @@ -37,12 +37,13 @@ sealed class AmountState( context: Context, conversion: FiatCurrencyConversion ): String = - kotlin.runCatching { - Zatoshi.fromZecString(context, amount, Locale.getDefault())?.toFiatString( - currencyConversion = conversion, - locale = Locale.getDefault() - ) ?: "" - }.getOrElse { "" } + kotlin + .runCatching { + Zatoshi.fromZecString(context, amount, Locale.getDefault())?.toFiatString( + currencyConversion = conversion, + locale = Locale.getDefault() + ) ?: "" + }.getOrElse { "" } data class Valid( override val amount: String, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt index 854e819ff..d47dd29a5 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt @@ -11,7 +11,9 @@ import co.electriccoin.zcash.ui.design.util.StringResource internal sealed class RequestState { data object Loading : RequestState() - sealed class Prepared(open val onBack: () -> Unit) : RequestState() + sealed class Prepared( + open val onBack: () -> Unit + ) : RequestState() data class Amount( val request: Request, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt index 1d50d8759..09e2fb907 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt @@ -169,8 +169,8 @@ class RequestViewModel( val shareResultCommand = MutableSharedFlow() - private fun resolveExchangeRateValue(exchangeRateUsd: ExchangeRateState): FiatCurrencyConversion? { - return when (exchangeRateUsd) { + private fun resolveExchangeRateValue(exchangeRateUsd: ExchangeRateState): FiatCurrencyConversion? = + when (exchangeRateUsd) { is ExchangeRateState.Data -> { if (exchangeRateUsd.currencyConversion == null) { Twig.warn { "Currency conversion is currently not available" } @@ -185,7 +185,6 @@ class RequestViewModel( null } } - } private fun onAmount( conversion: FiatCurrencyConversion?, @@ -210,11 +209,17 @@ class RequestViewModel( // Deleting up to the last character AmountState.Default(defaultAmount, request.value.amountState.currency) } else { - validateAmountState(conversion, request.value.amountState.amount.dropLast(1)) + validateAmountState( + conversion, + request.value.amountState.amount + .dropLast(1) + ) } } is OnAmount.Separator -> { - if (request.value.amountState.amount.contains(onAmount.separator)) { + if (request.value.amountState.amount + .contains(onAmount.separator) + ) { // Separator already present validateAmountState(conversion, request.value.amountState.amount) } else { @@ -237,7 +242,9 @@ class RequestViewModel( // Note that this regex aligns with the one from ZcashSDK (sdk-incubator-lib/src/main/res/values/strings-regex.xml) // It only adds check for 0-8 digits after the decimal separator at maximum @Suppress("MaxLineLength", "ktlint:standard:max-line-length") - private val allowedNumberFormatValidationRegex = "^([0-9]*([0-9]+([${getMonetarySeparators().grouping}]\$|[${getMonetarySeparators().grouping}][0-9]+))*([${getMonetarySeparators().decimal}]\$|[${getMonetarySeparators().decimal}][0-9]{0,8})?)?\$".toRegex() + private val allowedNumberFormatValidationRegex = + "^([0-9]*([0-9]+([${getMonetarySeparators().grouping}]\$|[${getMonetarySeparators().grouping}][0-9]+))*([${getMonetarySeparators().decimal}]\$|[${getMonetarySeparators().decimal}][0-9]{0,8})?)?\$" + .toRegex() private fun validateAmountState( conversion: FiatCurrencyConversion?, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/model/ParseResult.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/model/ParseResult.kt index 33c5915c4..baafdd091 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/model/ParseResult.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/model/ParseResult.kt @@ -9,17 +9,23 @@ internal sealed class ParseResult { override fun toString() = "Continue" } - data class Add(val words: List) : ParseResult() { + data class Add( + val words: List + ) : ParseResult() { // Override to prevent logging of user secrets override fun toString() = "Add" } - data class Autocomplete(val suggestions: List) : ParseResult() { + data class Autocomplete( + val suggestions: List + ) : ParseResult() { // Override to prevent logging of user secrets override fun toString() = "Autocomplete" } - data class Warn(val suggestions: List) : ParseResult() { + data class Warn( + val suggestions: List + ) : ParseResult() { // Override to prevent logging of user secrets override fun toString() = "Warn" } @@ -49,7 +55,8 @@ internal sealed class ParseResult { } val multiple = - trimmed.split(SeedPhrase.DEFAULT_DELIMITER) + trimmed + .split(SeedPhrase.DEFAULT_DELIMITER) .filter { completeWordList.contains(it) } .first(SeedPhrase.SEED_PHRASE_SIZE) if (multiple.isNotEmpty()) { @@ -60,20 +67,17 @@ internal sealed class ParseResult { } } - override fun toString(): String { - return "ParseResult()" - } + override fun toString(): String = "ParseResult()" } internal fun findSuggestions( input: String, completeWordList: Set -): List { - return if (input.isBlank()) { +): List = + if (input.isBlank()) { emptyList() } else { completeWordList.filter { it.startsWith(input) }.ifEmpty { findSuggestions(input.dropLast(1), completeWordList) } } -} diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/RestoreState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/RestoreState.kt index 384496ffa..5662f1835 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/RestoreState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/RestoreState.kt @@ -9,7 +9,9 @@ import kotlinx.coroutines.flow.StateFlow * primarily useful on Android, for automated tests, and for iterative debugging with the Compose * layout preview. The default constructor argument is generally fine for other platforms. */ -class RestoreState(initialState: RestoreStage = RestoreStage.values().first()) { +class RestoreState( + initialState: RestoreStage = RestoreStage.values().first() +) { private val mutableState = MutableStateFlow(initialState) val current: StateFlow = mutableState diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/WordList.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/WordList.kt index a8a48bc28..0d6d11f9f 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/WordList.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/state/WordList.kt @@ -9,7 +9,9 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map -class WordList(initial: List = emptyList()) { +class WordList( + initial: List = emptyList() +) { private val mutableState: MutableStateFlow> = MutableStateFlow(initial.toPersistentList()) val current: StateFlow> = mutableState diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt index 97323effd..8c8670469 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt @@ -556,8 +556,7 @@ private fun SeedGridWithText( width = ZcashTheme.dimens.layoutStroke, color = ZcashTheme.colors.layoutStroke ) - ) - .fillMaxWidth() + ).fillMaxWidth() .defaultMinSize(minHeight = ZcashTheme.dimens.textFieldSeedPanelDefaultHeight) .then(modifier) .testTag(RestoreTag.CHIP_LAYOUT) @@ -829,9 +828,10 @@ private fun RestoreBirthdayMainContent( // Empty birthday value is a valid birthday height too, thus run validation only in case of non-empty heights. val isBirthdayValid = - height.isEmpty() || height.toLongOrNull()?.let { - it >= zcashNetwork.saplingActivationHeight.value - } ?: false + height.isEmpty() || + height.toLongOrNull()?.let { + it >= zcashNetwork.saplingActivationHeight.value + } ?: false val isEmptyBirthday = height.isEmpty() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/viewmodel/RestoreViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/viewmodel/RestoreViewModel.kt index c7fe875e5..f8b888766 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/viewmodel/RestoreViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/viewmodel/RestoreViewModel.kt @@ -22,7 +22,10 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.withContext import java.util.Locale -class RestoreViewModel(application: Application, savedStateHandle: SavedStateHandle) : AndroidViewModel(application) { +class RestoreViewModel( + application: Application, + savedStateHandle: SavedStateHandle +) : AndroidViewModel(application) { val restoreState: RestoreState = run { val initialValue = @@ -107,5 +110,7 @@ class RestoreViewModel(application: Application, savedStateHandle: SavedStateHan sealed class CompleteWordSetState { object Loading : CompleteWordSetState() - data class Loaded(val list: ImmutableSet) : CompleteWordSetState() + data class Loaded( + val list: ImmutableSet + ) : CompleteWordSetState() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/reviewtransaction/ReviewTransactionViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/reviewtransaction/ReviewTransactionViewModel.kt index df79f13fa..b3b37e4e6 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/reviewtransaction/ReviewTransactionViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/reviewtransaction/ReviewTransactionViewModel.kt @@ -131,14 +131,14 @@ class ReviewTransactionViewModel( title = stringRes(R.string.send_confirmation_fee), amount = transactionProposal.proposal.totalFeeRequired() ), - transactionProposal.memo.takeIf { it.value.isNotEmpty() } + transactionProposal.memo + .takeIf { it.value.isNotEmpty() } ?.let { MessageState( title = stringRes(R.string.send_memo_label), message = stringRes(it.value) ) - } - ?.takeIf { transactionProposal.destination !is WalletAddress.Transparent }, + }?.takeIf { transactionProposal.destination !is WalletAddress.Transparent }, MessagePlaceholderState( title = stringRes(R.string.send_memo_label), message = stringRes(R.string.send_transparent_memo), diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/model/ScanResultState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/model/ScanResultState.kt index e0597eb1d..ff7a761c7 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/model/ScanResultState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/model/ScanResultState.kt @@ -1,7 +1,11 @@ package co.electriccoin.zcash.ui.screen.scan.model sealed class ScanResultState { - data class Address(val address: String) : ScanResultState() + data class Address( + val address: String + ) : ScanResultState() - data class Zip321Uri(val zip321Uri: String) : ScanResultState() + data class Zip321Uri( + val zip321Uri: String + ) : ScanResultState() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/util/ImageUriToQrCodeConverter.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/util/ImageUriToQrCodeConverter.kt index f0518d384..25e6632b6 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/util/ImageUriToQrCodeConverter.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/util/ImageUriToQrCodeConverter.kt @@ -21,7 +21,8 @@ class ImageUriToQrCodeConverter { ): String? = withContext(Dispatchers.IO) { runCatching { - uri.toBitmap(context) + uri + .toBitmap(context) .toBinaryBitmap() .toQRCode() }.onFailure { @@ -30,7 +31,8 @@ class ImageUriToQrCodeConverter { } private fun Uri.toBitmap(context: Context): Bitmap = - context.contentResolver.openInputStream(this) + context.contentResolver + .openInputStream(this) .use { BitmapFactory.decodeStream(it) } @@ -54,6 +56,6 @@ class ImageUriToQrCodeConverter { DecodeHintType.ALSO_INVERTED to true ) ) - } - .decodeWithState(this@toQRCode).text + }.decodeWithState(this@toQRCode) + .text } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt index 8c3770a36..74388f2bc 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt @@ -116,7 +116,8 @@ fun Scan( onScanStateChanged: (ScanScreenState) -> Unit, topAppBarSubTitleState: TopAppBarSubTitleState, validationResult: ScanValidationState -) = ZcashTheme(forceDarkMode = true) { // forces dark theme for this screen +) = ZcashTheme(forceDarkMode = true) { + // forces dark theme for this screen val permissionState = if (LocalInspectionMode.current) { remember { @@ -449,8 +450,7 @@ private fun ScanMainContent( .offset( x = 0.dp, y = with(density) { framePosition.bottom.toDp() } - ) - .padding(top = 36.dp), + ).padding(top = 36.dp), horizontalArrangement = Arrangement.Center ) { ImageButton( @@ -491,8 +491,7 @@ private fun ScanMainContent( bottom.linkTo(bottomItems.top) width = Dimension.matchParent height = Dimension.fillToConstraints - } - .onSizeChanged { + }.onSizeChanged { scanFrameLayoutSizeWindow = it } ) @@ -507,8 +506,7 @@ private fun ScanMainContent( bottom.linkTo(bottomItems.top) this.height = Dimension.ratio("1:1.08") // height is 8% larger than width width = Dimension.matchParent - } - .onSizeChanged { + }.onSizeChanged { scanFrameLayoutSize = it }, contentAlignment = Alignment.Center @@ -643,7 +641,8 @@ fun ScanCameraView( val contentDescription = stringResource(id = R.string.scan_preview_content_description) val imageAnalysis = - ImageAnalysis.Builder() + ImageAnalysis + .Builder() .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() @@ -660,7 +659,8 @@ fun ScanCameraView( } previewView.contentDescription = contentDescription val selector = - CameraSelector.Builder() + CameraSelector + .Builder() .requireLensFacing(CameraSelector.LENS_FACING_BACK) .build() val preview = @@ -672,12 +672,13 @@ fun ScanCameraView( // We must unbind the use-cases before rebinding them collectedCameraProvider.unbindAll() cameraController.value = - collectedCameraProvider.bindToLifecycle( - lifecycleOwner, - selector, - preview, - imageAnalysis - ).cameraControl + collectedCameraProvider + .bindToLifecycle( + lifecycleOwner, + selector, + preview, + imageAnalysis + ).cameraControl }.onFailure { Twig.error { "Scan QR failed in bind phase with: ${it.message}" } setScanState(ScanScreenState.Failed) @@ -691,11 +692,14 @@ fun ScanCameraView( .testTag(ScanTag.CAMERA_VIEW) ) - imageAnalysis.qrCodeFlow( - framePosition = framePosition, - ).collectAsState(initial = null).value?.let { - onScanned(it) - } + imageAnalysis + .qrCodeFlow( + framePosition = framePosition, + ).collectAsState(initial = null) + .value + ?.let { + onScanned(it) + } } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt index 668f4043c..883c527fe 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt @@ -114,7 +114,8 @@ fun ScanKeystoneView( topAppBarSubTitleState: TopAppBarSubTitleState, validationResult: ScanValidationState, state: ScanKeystoneState, -) = ZcashTheme(forceDarkMode = true) { // forces dark theme for this screen +) = ZcashTheme(forceDarkMode = true) { + // forces dark theme for this screen val permissionState = if (LocalInspectionMode.current) { remember { @@ -478,8 +479,7 @@ private fun ScanMainContent( .offset( x = 0.dp, y = with(density) { framePosition.bottom.toDp() } - ) - .padding(top = 36.dp), + ).padding(top = 36.dp), horizontalArrangement = Arrangement.Center ) { ImageButton( @@ -511,8 +511,7 @@ private fun ScanMainContent( bottom.linkTo(bottomItems.top) width = Dimension.matchParent height = Dimension.fillToConstraints - } - .onSizeChanged { + }.onSizeChanged { scanFrameLayoutSizeWindow = it } ) @@ -527,8 +526,7 @@ private fun ScanMainContent( bottom.linkTo(bottomItems.top) this.height = Dimension.ratio("1:1.08") // height is 8% larger than width width = Dimension.matchParent - } - .onSizeChanged { + }.onSizeChanged { scanFrameLayoutSize = it }, contentAlignment = Alignment.Center @@ -664,7 +662,8 @@ fun ScanCameraView( val contentDescription = stringResource(id = R.string.scan_preview_content_description) val imageAnalysis = - ImageAnalysis.Builder() + ImageAnalysis + .Builder() .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() @@ -681,7 +680,8 @@ fun ScanCameraView( } previewView.contentDescription = contentDescription val selector = - CameraSelector.Builder() + CameraSelector + .Builder() .requireLensFacing(CameraSelector.LENS_FACING_BACK) .build() val preview = @@ -693,12 +693,13 @@ fun ScanCameraView( // We must unbind the use-cases before rebinding them collectedCameraProvider.unbindAll() cameraController.value = - collectedCameraProvider.bindToLifecycle( - lifecycleOwner, - selector, - preview, - imageAnalysis - ).cameraControl + collectedCameraProvider + .bindToLifecycle( + lifecycleOwner, + selector, + preview, + imageAnalysis + ).cameraControl }.onFailure { Twig.error { "Scan QR failed in bind phase with: ${it.message}" } setScanState(ScanScreenState.Failed) @@ -712,11 +713,14 @@ fun ScanCameraView( .testTag(ScanTag.CAMERA_VIEW) ) - imageAnalysis.qrCodeFlow( - framePosition = framePosition, - ).collectAsState(initial = null).value?.let { - onScanned(it) - } + imageAnalysis + .qrCodeFlow( + framePosition = framePosition, + ).collectAsState(initial = null) + .value + ?.let { + onScanned(it) + } } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/view/SeedView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/view/SeedView.kt index 2f7f3be33..4d05043cc 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/view/SeedView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/view/SeedView.kt @@ -205,8 +205,7 @@ private fun SeedSecret( tooltipState.show() } } - } - .padding( + }.padding( horizontal = ZashiDimensions.Spacing.spacingXs, vertical = ZashiDimensions.Spacing.spacingSm ) @@ -337,15 +336,14 @@ private fun SecretContent(state: SeedSecretState) { private fun Modifier.blurCompat( radius: Dp, max: Dp -): Modifier { - return if (AndroidApiVersion.isAtLeastS) { +): Modifier = + if (AndroidApiVersion.isAtLeastS) { this.blur(radius) } else { val progression = 1 - (radius.value / max.value) this .alpha(progression) } -} @Composable private fun SecretBirthdayContent( diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/viewmodel/SeedViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/viewmodel/SeedViewModel.kt index 05320033c..0638be2c9 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/viewmodel/SeedViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/viewmodel/SeedViewModel.kt @@ -74,7 +74,14 @@ class SeedViewModel( birthday = SeedSecretState( title = stringRes(R.string.seed_recovery_bday_title), - text = stringRes(wallet?.birthday?.value?.toString().orEmpty()), + text = + stringRes( + wallet + ?.birthday + ?.value + ?.toString() + .orEmpty() + ), isRevealed = isRevealed, tooltip = SeedSecretStateTooltip( diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/SelectKeystoneAccount.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/SelectKeystoneAccount.kt index 9b4d7f5ee..84f357f50 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/SelectKeystoneAccount.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/SelectKeystoneAccount.kt @@ -3,4 +3,6 @@ package co.electriccoin.zcash.ui.screen.selectkeystoneaccount import kotlinx.serialization.Serializable @Serializable -data class SelectKeystoneAccount(val ur: String) +data class SelectKeystoneAccount( + val ur: String +) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/viewmodel/SelectKeystoneAccountViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/viewmodel/SelectKeystoneAccountViewModel.kt index b8cbc927c..b4c9f20b6 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/viewmodel/SelectKeystoneAccountViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/selectkeystoneaccount/viewmodel/SelectKeystoneAccountViewModel.kt @@ -55,8 +55,8 @@ class SelectKeystoneAccountViewModel( private suspend fun createState( selection: ZcashAccount?, isCreatingAccount: Boolean - ): SelectKeystoneAccountState { - return SelectKeystoneAccountState( + ): SelectKeystoneAccountState = + SelectKeystoneAccountState( onBackClick = ::onBackClick, title = stringRes(co.electriccoin.zcash.ui.R.string.select_keystone_account_title), subtitle = stringRes(co.electriccoin.zcash.ui.R.string.select_keystone_account_subtitle), @@ -83,7 +83,6 @@ class SelectKeystoneAccountViewModel( onClick = ::onForgetDeviceClick, ), ) - } private suspend fun createCheckboxState( account: ZcashAccount, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/SendViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/SendViewModel.kt index 4feab193f..d8230fbb5 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/SendViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/SendViewModel.kt @@ -44,62 +44,64 @@ class SendViewModel( @OptIn(ExperimentalCoroutinesApi::class) val sendAddressBookState = - recipientAddressState.flatMapLatest { recipientAddressState -> - combine(observeWalletAccounts.require(), observeContactByAddress(recipientAddressState.address)) { - accounts, contact -> - accounts to contact - }.flatMapLatest { (accounts, contact) -> - flow { - val exists = - contact != null || - accounts.any { it.unified.address.address == recipientAddressState.address } - val isValid = recipientAddressState.type?.isNotValid == false - val mode = - if (isValid) { - if (exists) { - SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK - } else { - SendAddressBookState.Mode.ADD_TO_ADDRESS_BOOK - } - } else { - SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK - } - val isHintVisible = !exists && isValid + recipientAddressState + .flatMapLatest { recipientAddressState -> + combine( + observeWalletAccounts.require(), + observeContactByAddress(recipientAddressState.address) + ) { accounts, contact -> accounts to contact } + .flatMapLatest { (accounts, contact) -> + flow { + val exists = + contact != null || + accounts.any { it.unified.address.address == recipientAddressState.address } + val isValid = recipientAddressState.type?.isNotValid == false + val mode = + if (isValid) { + if (exists) { + SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK + } else { + SendAddressBookState.Mode.ADD_TO_ADDRESS_BOOK + } + } else { + SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK + } + val isHintVisible = !exists && isValid - emit( - SendAddressBookState( - mode = mode, - isHintVisible = isHintVisible, - onButtonClick = { onAddressBookButtonClicked(mode, recipientAddressState) } - ) - ) - - if (isHintVisible) { - delay(3.seconds) - emit( - SendAddressBookState( - mode = mode, - isHintVisible = false, - onButtonClick = { onAddressBookButtonClicked(mode, recipientAddressState) } + emit( + SendAddressBookState( + mode = mode, + isHintVisible = isHintVisible, + onButtonClick = { onAddressBookButtonClicked(mode, recipientAddressState) } + ) ) + + if (isHintVisible) { + delay(3.seconds) + emit( + SendAddressBookState( + mode = mode, + isHintVisible = false, + onButtonClick = { onAddressBookButtonClicked(mode, recipientAddressState) } + ) + ) + } + } + } + }.stateIn( + viewModelScope, + SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + SendAddressBookState( + mode = SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK, + isHintVisible = false, + onButtonClick = { + onAddressBookButtonClicked( + mode = SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK, + recipient = recipientAddressState.value ) } - } - } - }.stateIn( - viewModelScope, - SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - SendAddressBookState( - mode = SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK, - isHintVisible = false, - onButtonClick = { - onAddressBookButtonClicked( - mode = SendAddressBookState.Mode.PICK_FROM_ADDRESS_BOOK, - recipient = recipientAddressState.value - ) - } + ) ) - ) init { viewModelScope.launch { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/ext/MemoExt.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/ext/MemoExt.kt index 366a5f2c9..2789fb2ff 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/ext/MemoExt.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/ext/MemoExt.kt @@ -15,6 +15,4 @@ internal fun Memo.valueOrEmptyChar(): String { return valueOrEmptyChar(LocalContext.current) } -internal fun Memo.valueOrEmptyChar(context: Context): String { - return value.ifEmpty { context.getString(R.string.empty_char) } -} +internal fun Memo.valueOrEmptyChar(context: Context): String = value.ifEmpty { context.getString(R.string.empty_char) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/AmountState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/AmountState.kt index cc1d26400..dd03a37c3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/AmountState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/AmountState.kt @@ -23,7 +23,10 @@ sealed interface AmountState { val zatoshi: Zatoshi ) : AmountState - data class Invalid(override val value: String, override val fiatValue: String) : AmountState + data class Invalid( + override val value: String, + override val fiatValue: String + ) : AmountState companion object { @Suppress("LongParameterList") diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/SendStage.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/SendStage.kt index 3d083288f..de1f16987 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/SendStage.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/model/SendStage.kt @@ -7,7 +7,9 @@ sealed class SendStage { data object Proposing : SendStage() - data class SendFailure(val error: String) : SendStage() + data class SendFailure( + val error: String + ) : SendStage() companion object { private const val TYPE_FORM = "form" // $NON-NLS diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/sendconfirmation/viewmodel/CreateTransactionsViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/sendconfirmation/viewmodel/CreateTransactionsViewModel.kt index 27fba951d..cfe56264e 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/sendconfirmation/viewmodel/CreateTransactionsViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/sendconfirmation/viewmodel/CreateTransactionsViewModel.kt @@ -22,13 +22,14 @@ class CreateTransactionsViewModel : ViewModel() { val submitResults = mutableListOf() return runCatching { - synchronizer.createProposedTransactions( - proposal = proposal, - usk = spendingKey - ).collect { submitResult -> - Twig.info { "Transaction submit result: $submitResult" } - submitResults.add(submitResult) - } + synchronizer + .createProposedTransactions( + proposal = proposal, + usk = spendingKey + ).collect { submitResult -> + Twig.info { "Transaction submit result: $submitResult" } + submitResults.add(submitResult) + } if (submitResults.find { it is TransactionSubmitResult.Failure } != null) { if (submitResults.size == 1) { // The first transaction submission failed - user might just be able to re-submit the transaction diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt index bf5b5f69d..310773e12 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt @@ -5,7 +5,9 @@ import androidx.lifecycle.AndroidViewModel import co.electriccoin.zcash.ui.design.component.ScreenBrightness import kotlinx.coroutines.flow.MutableStateFlow -class ScreenBrightnessViewModel(application: Application) : AndroidViewModel(application) { +class ScreenBrightnessViewModel( + application: Application +) : AndroidViewModel(application) { private val screenBrightness: MutableStateFlow = MutableStateFlow(ScreenBrightness) val screenBrightnessState = screenBrightness.value.referenceSwitch diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt index 1657f7e3d..bde23d842 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt @@ -66,8 +66,7 @@ class SignKeystoneTransactionViewModel( } else { null } - } - .stateIn( + }.stateIn( scope = viewModelScope, started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), initialValue = null diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/ConfigInfo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/ConfigInfo.kt index c7942595c..a6aa7f111 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/ConfigInfo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/ConfigInfo.kt @@ -6,7 +6,9 @@ import kotlinx.datetime.Instant // TODO [#1301]: Localize support text content // TODO [#1301]: https://github.com/Electric-Coin-Company/zashi-android/issues/1301 -data class ConfigInfo(val configurationUpdatedAt: Instant?) { +data class ConfigInfo( + val configurationUpdatedAt: Instant? +) { fun toSupportString() = buildString { append("Configuration: $configurationUpdatedAt") diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/CrashInfo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/CrashInfo.kt index 062734187..82f2d0227 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/CrashInfo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/CrashInfo.kt @@ -12,7 +12,11 @@ import java.io.File // TODO [#1301]: Localize feedback text content // TODO [#1301]: https://github.com/Electric-Coin-Company/zashi-android/issues/1301 -data class CrashInfo(val exceptionClassName: String, val isUncaught: Boolean, val timestamp: Instant) { +data class CrashInfo( + val exceptionClassName: String, + val isUncaught: Boolean, + val timestamp: Instant +) { fun toSupportString() = buildString { appendLine("Exception") diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/DeviceInfo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/DeviceInfo.kt index f064bf0db..d645c74d6 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/DeviceInfo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/DeviceInfo.kt @@ -5,7 +5,11 @@ import android.os.Build // TODO [#1301]: Localize support text content // TODO [#1301]: https://github.com/Electric-Coin-Company/zashi-android/issues/1301 -data class DeviceInfo(val manufacturer: String, val device: String, val model: String) { +data class DeviceInfo( + val manufacturer: String, + val device: String, + val model: String +) { fun toSupportString() = buildString { appendLine("Device: $manufacturer $device $model") diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/OperatingSystemInfo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/OperatingSystemInfo.kt index da03fd828..4a8d55aab 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/OperatingSystemInfo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/OperatingSystemInfo.kt @@ -6,7 +6,10 @@ import co.electriccoin.zcash.spackle.AndroidApiVersion // TODO [#1301]: Localize support text content // TODO [#1301]: https://github.com/Electric-Coin-Company/zashi-android/issues/1301 -data class OperatingSystemInfo(val sdkInt: Int, val isPreview: Boolean) { +data class OperatingSystemInfo( + val sdkInt: Int, + val isPreview: Boolean +) { fun toSupportString() = buildString { appendLine("Platform: Android") diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/PermissionInfo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/PermissionInfo.kt index 3fa9eb7ff..37431e924 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/PermissionInfo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/model/PermissionInfo.kt @@ -9,7 +9,10 @@ import co.electriccoin.zcash.spackle.getPackageInfoCompatSuspend // TODO [#1301]: Localize support text content // TODO [#1301]: https://github.com/Electric-Coin-Company/zashi-android/issues/1301 -data class PermissionInfo(val permissionName: String, val permissionStatus: PermissionStatus) { +data class PermissionInfo( + val permissionName: String, + val permissionStatus: PermissionStatus +) { fun toSupportString() = buildString { appendLine("$permissionName $permissionStatus") @@ -30,15 +33,14 @@ data class PermissionInfo(val permissionName: String, val permissionStatus: Perm context: Context, packageInfo: PackageInfo, permissionName: String - ): PermissionInfo { - return if (isPermissionGrantedByUser(context, permissionName)) { + ): PermissionInfo = + if (isPermissionGrantedByUser(context, permissionName)) { PermissionInfo(permissionName, PermissionStatus.Granted) } else if (isPermissionGrantedByManifest(packageInfo, permissionName)) { PermissionInfo(permissionName, PermissionStatus.NotGrantedByUser) } else { PermissionInfo(permissionName, PermissionStatus.NotGrantedByManifest) } - } private fun isPermissionGrantedByUser( context: Context, @@ -52,9 +54,7 @@ data class PermissionInfo(val permissionName: String, val permissionStatus: Perm private fun isPermissionGrantedByManifest( packageInfo: PackageInfo, permissionName: String - ): Boolean { - return packageInfo.requestedPermissions?.any { permissionName == it } ?: false - } + ): Boolean = packageInfo.requestedPermissions?.any { permissionName == it } ?: false } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/viewmodel/SupportViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/viewmodel/SupportViewModel.kt index 1a9c957bd..e7d0fa595 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/viewmodel/SupportViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/support/viewmodel/SupportViewModel.kt @@ -23,6 +23,5 @@ class SupportViewModel( val supportInfo: StateFlow = flow { emit(SupportInfo.new(application, androidConfigurationProvider)) - } - .stateIn(viewModelScope, SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT, Duration.ZERO), null) + }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT, Duration.ZERO), null) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailView.kt index 8bd0facb5..419d703e8 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailView.kt @@ -169,8 +169,8 @@ private fun BottomBar( } } -fun getHeaderIconState(info: TransactionDetailInfoState): TransactionDetailIconHeaderState { - return TransactionDetailIconHeaderState( +fun getHeaderIconState(info: TransactionDetailInfoState): TransactionDetailIconHeaderState = + TransactionDetailIconHeaderState( when (info) { is ReceiveShieldedState -> listOf( @@ -204,7 +204,6 @@ fun getHeaderIconState(info: TransactionDetailInfoState): TransactionDetailIconH ) } ) -} @Composable private fun TransactionDetailTopAppBar( diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailViewModel.kt index f85a9613a..166380992 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/TransactionDetailViewModel.kt @@ -66,38 +66,40 @@ class TransactionDetailViewModel( @OptIn(ExperimentalCoroutinesApi::class) val state = - transaction.filterNotNull().mapLatest { transaction -> - TransactionDetailState( - onBack = ::onBack, - header = createTransactionHeaderState(transaction), - info = createTransactionInfoState(transaction), - primaryButton = createPrimaryButtonState(transaction), - secondaryButton = - ButtonState( - text = - if (transaction.metadata?.note != null) { - stringRes(R.string.transaction_detail_edit_note) - } else { - stringRes(R.string.transaction_detail_add_a_note) - }, - onClick = ::onAddOrEditNoteClick - ), - bookmarkButton = - IconButtonState( - icon = - if (transaction.metadata?.isBookmarked == true) { - R.drawable.ic_transaction_detail_bookmark - } else { - R.drawable.ic_transaction_detail_no_bookmark - }, - onClick = ::onBookmarkClick - ) + transaction + .filterNotNull() + .mapLatest { transaction -> + TransactionDetailState( + onBack = ::onBack, + header = createTransactionHeaderState(transaction), + info = createTransactionInfoState(transaction), + primaryButton = createPrimaryButtonState(transaction), + secondaryButton = + ButtonState( + text = + if (transaction.metadata?.note != null) { + stringRes(R.string.transaction_detail_edit_note) + } else { + stringRes(R.string.transaction_detail_add_a_note) + }, + onClick = ::onAddOrEditNoteClick + ), + bookmarkButton = + IconButtonState( + icon = + if (transaction.metadata?.isBookmarked == true) { + R.drawable.ic_transaction_detail_bookmark + } else { + R.drawable.ic_transaction_detail_no_bookmark + }, + onClick = ::onBookmarkClick + ) + ) + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + initialValue = null ) - }.stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - initialValue = null - ) init { viewModelScope.launch { @@ -114,8 +116,8 @@ class TransactionDetailViewModel( navigationRouter.forward(TransactionNote(transactionDetail.transactionId)) } - private fun createTransactionInfoState(transaction: DetailedTransactionData): TransactionDetailInfoState { - return when (transaction.transaction) { + private fun createTransactionInfoState(transaction: DetailedTransactionData): TransactionDetailInfoState = + when (transaction.transaction) { is SendTransaction -> { if (transaction.recipientAddress is WalletAddress.Transparent) { SendTransparentState( @@ -155,7 +157,8 @@ class TransactionDetailViewModel( completedTimestamp = createTimestampStringRes(transaction), memo = TransactionDetailMemosState( - transaction.memos.orEmpty() + transaction.memos + .orEmpty() .map { memo -> TransactionDetailMemoState( content = stringRes(memo), @@ -195,7 +198,8 @@ class TransactionDetailViewModel( completedTimestamp = createTimestampStringRes(transaction), memo = TransactionDetailMemosState( - transaction.memos.orEmpty() + transaction.memos + .orEmpty() .map { memo -> TransactionDetailMemoState( content = stringRes(memo), @@ -224,7 +228,6 @@ class TransactionDetailViewModel( ) } } - } private fun createFeeStringRes(data: DetailedTransactionData): StringResource { val feePaid = diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/infoitems/TransactionDetailInfoMemo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/infoitems/TransactionDetailInfoMemo.kt index e42e1e77a..4519e86b0 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/infoitems/TransactionDetailInfoMemo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactiondetail/infoitems/TransactionDetailInfoMemo.kt @@ -162,8 +162,7 @@ private fun TransactionDetailInfoMemo( interactionSource = remember { MutableInteractionSource() }, onClick = state.bottomButton.onClick, role = Role.Button, - ) - .padding(12.dp), + ).padding(12.dp), verticalAlignment = CenterVertically ) { SelectionContainer { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/viewmodel/TransactionFiltersViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/viewmodel/TransactionFiltersViewModel.kt index 10a469404..fdc80e6df 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/viewmodel/TransactionFiltersViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/viewmodel/TransactionFiltersViewModel.kt @@ -43,67 +43,68 @@ internal class TransactionFiltersViewModel( @OptIn(ExperimentalCoroutinesApi::class) val state: StateFlow = - selectedFilters.mapLatest { current -> - TransactionFiltersState( - filters = - TransactionFilter.entries.map { - when (it) { - SENT -> - TransactionFilterState( - text = stringRes(R.string.transaction_filters_sent), - isSelected = current.contains(SENT), - onClick = { onTransactionFilterClicked(it) } - ) - RECEIVED -> - TransactionFilterState( - text = stringRes(R.string.transaction_filters_received), - isSelected = current.contains(RECEIVED), - onClick = { onTransactionFilterClicked(it) } - ) - MEMOS -> - TransactionFilterState( - text = stringRes(R.string.transaction_filters_memos), - isSelected = current.contains(MEMOS), - onClick = { onTransactionFilterClicked(it) } - ) - UNREAD -> - TransactionFilterState( - text = stringRes(R.string.transaction_filters_unread), - isSelected = current.contains(UNREAD), - onClick = { onTransactionFilterClicked(it) } - ) - BOOKMARKED -> - TransactionFilterState( - text = stringRes(R.string.transaction_filters_bookmarked), - isSelected = current.contains(BOOKMARKED), - onClick = { onTransactionFilterClicked(it) } - ) - NOTES -> - TransactionFilterState( - text = stringRes(R.string.transaction_filters_notes), - isSelected = current.contains(NOTES), - onClick = { onTransactionFilterClicked(it) } - ) - } - }, - onBack = ::onBack, - onBottomSheetHidden = ::onBottomSheetHidden, - primaryButton = - ButtonState( - text = stringRes(R.string.transaction_filters_btn_apply), - onClick = ::onApplyTransactionFiltersClick, - ), - secondaryButton = - ButtonState( - text = stringRes(R.string.transaction_filters_btn_reset), - onClick = ::onResetTransactionFiltersClick, - ), + selectedFilters + .mapLatest { current -> + TransactionFiltersState( + filters = + TransactionFilter.entries.map { + when (it) { + SENT -> + TransactionFilterState( + text = stringRes(R.string.transaction_filters_sent), + isSelected = current.contains(SENT), + onClick = { onTransactionFilterClicked(it) } + ) + RECEIVED -> + TransactionFilterState( + text = stringRes(R.string.transaction_filters_received), + isSelected = current.contains(RECEIVED), + onClick = { onTransactionFilterClicked(it) } + ) + MEMOS -> + TransactionFilterState( + text = stringRes(R.string.transaction_filters_memos), + isSelected = current.contains(MEMOS), + onClick = { onTransactionFilterClicked(it) } + ) + UNREAD -> + TransactionFilterState( + text = stringRes(R.string.transaction_filters_unread), + isSelected = current.contains(UNREAD), + onClick = { onTransactionFilterClicked(it) } + ) + BOOKMARKED -> + TransactionFilterState( + text = stringRes(R.string.transaction_filters_bookmarked), + isSelected = current.contains(BOOKMARKED), + onClick = { onTransactionFilterClicked(it) } + ) + NOTES -> + TransactionFilterState( + text = stringRes(R.string.transaction_filters_notes), + isSelected = current.contains(NOTES), + onClick = { onTransactionFilterClicked(it) } + ) + } + }, + onBack = ::onBack, + onBottomSheetHidden = ::onBottomSheetHidden, + primaryButton = + ButtonState( + text = stringRes(R.string.transaction_filters_btn_apply), + onClick = ::onApplyTransactionFiltersClick, + ), + secondaryButton = + ButtonState( + text = stringRes(R.string.transaction_filters_btn_reset), + onClick = ::onResetTransactionFiltersClick, + ), + ) + }.stateIn( + viewModelScope, + SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + null ) - }.stateIn( - viewModelScope, - SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - null - ) private fun onTransactionFilterClicked(filter: TransactionFilter) { selectedFilters.update { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/Transaction.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/Transaction.kt index e98b70f3a..7cfd395d6 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/Transaction.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/Transaction.kt @@ -66,8 +66,7 @@ fun Transaction( interactionSource = remember { MutableInteractionSource() }, onClick = state.onClick, role = Role.Button, - ) - .padding(contentPadding), + ).padding(contentPadding), verticalAlignment = Alignment.CenterVertically ) { Box { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/TransactionHistoryViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/TransactionHistoryViewModel.kt index cef182936..5e4b5bc06 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/TransactionHistoryViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionhistory/TransactionHistoryViewModel.kt @@ -44,19 +44,20 @@ class TransactionHistoryViewModel( private val restoreTimestampDataSource: RestoreTimestampDataSource ) : ViewModel() { val search = - transactionFilterRepository.fulltextFilter.map { - TextFieldState(stringRes(it.orEmpty()), onValueChange = ::onFulltextFilterChanged) - }.stateIn( - scope = viewModelScope, - started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), - initialValue = - TextFieldState( - stringRes( - transactionFilterRepository.fulltextFilter.value.orEmpty() - ), - onValueChange = ::onFulltextFilterChanged - ) - ) + transactionFilterRepository.fulltextFilter + .map { + TextFieldState(stringRes(it.orEmpty()), onValueChange = ::onFulltextFilterChanged) + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), + initialValue = + TextFieldState( + stringRes( + transactionFilterRepository.fulltextFilter.value.orEmpty() + ), + onValueChange = ::onFulltextFilterChanged + ) + ) @OptIn(ExperimentalCoroutinesApi::class) val state = @@ -84,14 +85,15 @@ class TransactionHistoryViewModel( restoreTimestamp = restoreTimestampDataSource.getOrCreate() ) } - }.flowOn(Dispatchers.Default).stateIn( - scope = viewModelScope, - started = SharingStarted.Lazily, - initialValue = - createLoadingState( - filtersSize = 0, - ) - ) + }.flowOn(Dispatchers.Default) + .stateIn( + scope = viewModelScope, + started = SharingStarted.Lazily, + initialValue = + createLoadingState( + filtersSize = 0, + ) + ) override fun onCleared() { resetTransactionFilters() @@ -109,7 +111,9 @@ class TransactionHistoryViewModel( transactions .groupBy { val other = - it.transaction.timestamp?.atZone(ZoneId.systemDefault())?.toLocalDate() ?: now + it.transaction.timestamp + ?.atZone(ZoneId.systemDefault()) + ?.toLocalDate() ?: now when { now == other -> stringRes(R.string.transaction_history_today) to "today" @@ -128,8 +132,7 @@ class TransactionHistoryViewModel( stringRes(yearMonth) to yearMonth.toString() } } - } - .map { (entry, transactions) -> + }.map { (entry, transactions) -> val (headerStringRes, headerId) = entry listOf( TransactionHistoryItem.Header( @@ -147,8 +150,7 @@ class TransactionHistoryViewModel( ) ) } - } - .flatten() + }.flatten() return TransactionHistoryState.Data( onBack = ::onBack, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/TransactionNote.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/TransactionNote.kt index 4a92b4937..02930eaf7 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/TransactionNote.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/TransactionNote.kt @@ -3,4 +3,6 @@ package co.electriccoin.zcash.ui.screen.transactionnote import kotlinx.serialization.Serializable @Serializable -data class TransactionNote(val txId: String) +data class TransactionNote( + val txId: String +) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionprogress/TransactionProgressView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionprogress/TransactionProgressView.kt index a99283a9c..30d65aa7b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionprogress/TransactionProgressView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionprogress/TransactionProgressView.kt @@ -608,8 +608,7 @@ private fun MultipleFailureTransaction( .background( shape = RoundedCornerShape(ZashiDimensions.Radius.radiusIg), color = ZashiColors.Inputs.Default.bg - ) - .padding( + ).padding( horizontal = ZashiDimensions.Spacing.spacingLg, vertical = ZashiDimensions.Spacing.spacingMd ) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/model/WhatsNewState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/model/WhatsNewState.kt index 4ef6d4716..c711f4e54 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/model/WhatsNewState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/model/WhatsNewState.kt @@ -32,4 +32,7 @@ data class WhatsNewState( } } -data class WhatsNewSectionState(val title: StringResource, val content: StringResource) +data class WhatsNewSectionState( + val title: StringResource, + val content: StringResource +) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/view/WhatsNewView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/view/WhatsNewView.kt index 6264e5664..799c9aea3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/view/WhatsNewView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/view/WhatsNewView.kt @@ -108,12 +108,13 @@ private fun WhatsNewSection(state: WhatsNewSectionState) { val bulletRestLine = with(LocalDensity.current) { bulletStringWidth.toSp() } val bulletParagraphStyle = ParagraphStyle(textIndent = TextIndent(restLine = bulletRestLine)) val bulletStyle = - state.content.getValue().split("\n-") + state.content + .getValue() + .split("\n-") .filter { it.isNotBlank() } .map { it.replace("\n-", "").trim() - } - .let { text -> + }.let { text -> buildAnnotatedString { text.forEach { withStyle(style = bulletParagraphStyle) { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/viewmodel/WhatsNewViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/viewmodel/WhatsNewViewModel.kt index ee0c6b9a9..5a377d5ec 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/viewmodel/WhatsNewViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/whatsnew/viewmodel/WhatsNewViewModel.kt @@ -12,7 +12,9 @@ import kotlinx.coroutines.flow.WhileSubscribed import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.stateIn -class WhatsNewViewModel(application: Application) : AndroidViewModel(application) { +class WhatsNewViewModel( + application: Application +) : AndroidViewModel(application) { val state: StateFlow = flow { val versionInfo = VersionInfo.new(application) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/EmailUtil.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/EmailUtil.kt index 9558fd9c1..d7a88321f 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/EmailUtil.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/EmailUtil.kt @@ -57,8 +57,8 @@ object EmailUtil { recipientAddress: String, messageSubject: String, messageBody: String - ): Intent { - return Intent(Intent.ACTION_SEND).apply { + ): Intent = + Intent(Intent.ACTION_SEND).apply { type = RFC2822_MIMETPYE putExtra( Intent.EXTRA_EMAIL, @@ -69,7 +69,6 @@ object EmailUtil { putExtra(Intent.EXTRA_SUBJECT, messageSubject) putExtra(Intent.EXTRA_TEXT, messageBody) } - } // This approach combines both adding data to Uri and Extras to ensure that most of the available e-mail client // apps can understand the output Intent. Tested with Gmail, Proton mail, Yahoo, and Seznam.cz. diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FileShareUtil.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FileShareUtil.kt index f78fe26af..7262055c2 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FileShareUtil.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FileShareUtil.kt @@ -44,8 +44,8 @@ object FileShareUtil { shareText: String? = null, sharePickerText: String, versionInfo: VersionInfo, - ): Intent { - return newShareContentIntent( + ): Intent = + newShareContentIntent( context = context, file = File(dataFilePath), shareText = shareText, @@ -53,7 +53,6 @@ object FileShareUtil { versionInfo = versionInfo, fileType = fileType, ) - } internal fun newShareContentIntent( context: Context, @@ -84,15 +83,16 @@ object FileShareUtil { } val shareDataIntent = - Intent.createChooser( - dataIntent, - sharePickerText - ).apply { - addFlags( - SHARE_CONTENT_PERMISSION_FLAGS or - SHARE_OUTSIDE_THE_APP_FLAGS - ) - } + Intent + .createChooser( + dataIntent, + sharePickerText + ).apply { + addFlags( + SHARE_CONTENT_PERMISSION_FLAGS or + SHARE_OUTSIDE_THE_APP_FLAGS + ) + } return shareDataIntent } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FlowExt.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FlowExt.kt index 0c464ff49..1d941ecfc 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FlowExt.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/FlowExt.kt @@ -3,6 +3,5 @@ package co.electriccoin.zcash.ui.util import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine -inline fun List>.combineToFlow(): Flow> { - return combine(this.map { flow -> flow }) { items -> items.toList() } -} +inline fun List>.combineToFlow(): Flow> = + combine(this.map { flow -> flow }) { items -> items.toList() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/SettingsUtil.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/SettingsUtil.kt index 20f518504..05791bcd2 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/SettingsUtil.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/util/SettingsUtil.kt @@ -19,22 +19,20 @@ object SettingsUtil { * * @return Intent for launching the system Settings app */ - internal fun newSettingsIntent(packageName: String): Intent { - return Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { + internal fun newSettingsIntent(packageName: String): Intent = + Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { addCategory(Intent.CATEGORY_DEFAULT) data = Uri.parse("$SETTINGS_URI_PREFIX$packageName") flags = FLAGS } - } /** * Returns an intent to the system Storage Settings page. * * @return Intent for launching the system Settings app */ - internal fun newStorageSettingsIntent(): Intent { - return Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS).apply { + internal fun newStorageSettingsIntent(): Intent = + Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS).apply { flags = FLAGS } - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/work/SyncWorker.kt b/ui-lib/src/main/java/co/electriccoin/zcash/work/SyncWorker.kt index 1c5f15de8..7a6fb6b14 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/work/SyncWorker.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/work/SyncWorker.kt @@ -43,7 +43,8 @@ import kotlin.time.toJavaDuration class SyncWorker( context: Context, workerParameters: WorkerParameters -) : CoroutineWorker(context, workerParameters), KoinComponent { +) : CoroutineWorker(context, workerParameters), + KoinComponent { private val observeSynchronizer: ObserveSynchronizerUseCase by inject() @OptIn(ExperimentalCoroutinesApi::class) @@ -59,12 +60,10 @@ class SyncWorker( Twig.debug { "BG Sync: result: $it" } } } ?: emptyFlow() - } - .takeWhile { + }.takeWhile { it.status != Synchronizer.Status.DISCONNECTED && it.status != Synchronizer.Status.SYNCED - } - .collect() + }.collect() Twig.debug { "BG Sync: terminating..." } @@ -83,7 +82,8 @@ class SyncWorker( Twig.debug { "BG Sync: necessary trigger delay time: $targetTimeDiff" } val constraints = - Constraints.Builder() + Constraints + .Builder() .setRequiresStorageNotLow(true) .setRequiredNetworkType(NetworkType.UNMETERED) .setRequiresCharging(true) @@ -117,11 +117,12 @@ class SyncWorker( Twig.debug { "BG Sync: calculated target time: ${targetTime.time}" } - return now.until( - other = targetTime.toInstant(currentTimeZone), - unit = DateTimeUnit.MILLISECOND, - timeZone = currentTimeZone - ).toDuration(DurationUnit.MILLISECONDS) + return now + .until( + other = targetTime.toInstant(currentTimeZone), + unit = DateTimeUnit.MILLISECOND, + timeZone = currentTimeZone + ).toDuration(DurationUnit.MILLISECONDS) } } } diff --git a/ui-lib/src/store/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt b/ui-lib/src/store/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt index 9f8bee901..76507227e 100644 --- a/ui-lib/src/store/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt +++ b/ui-lib/src/store/java/co/electriccoin/zcash/ui/screen/scan/util/QrCodeAnalyzerImpl.kt @@ -42,7 +42,8 @@ class QrCodeAnalyzerImpl( // Configure Barcode Scanner Options val options = - BarcodeScannerOptions.Builder() + BarcodeScannerOptions + .Builder() .setBarcodeFormats(supportedImageFormat) // We could optionally use this to enhance scan success ratio. If it's specified, then the library // will suggest zooming the camera if the barcode is too far away or too small to be detected. @@ -52,7 +53,8 @@ class QrCodeAnalyzerImpl( // Initialize Barcode Scanner val scanner = BarcodeScanning.getClient(options) - scanner.process(image) + scanner + .process(image) .addOnSuccessListener { barcodes -> for (barcode in barcodes) { barcode.rawValue?.let { value -> @@ -62,11 +64,9 @@ class QrCodeAnalyzerImpl( return@addOnSuccessListener } } - } - .addOnFailureListener { e -> + }.addOnFailureListener { e -> Twig.error(e) { "Barcode detection failed" } - } - .addOnCompleteListener { + }.addOnCompleteListener { // Close the image proxy imageProxy.close() } diff --git a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt index 0ad78a7d5..fb8fb9e3a 100644 --- a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt +++ b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt @@ -191,17 +191,18 @@ class ScreenshotTest : UiTestPrerequisites() { composeTestRule.waitUntilDoesNotExist(hasTestTag(WELCOME_ANIM_TEST_TAG), DEFAULT_TIMEOUT_MILLISECONDS) - composeTestRule.onNodeWithText( - text = - resContext.getString( - R.string.onboarding_import_existing_wallet - ), - ignoreCase = true - ).also { - it.performScrollTo() - it.assertExists() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = + resContext.getString( + R.string.onboarding_import_existing_wallet + ), + ignoreCase = true + ).also { + it.performScrollTo() + it.assertExists() + it.performClick() + } // To ensure that the new screen is available, or wait until it is composeTestRule.waitUntilAtLeastOneExists( @@ -228,21 +229,25 @@ class ScreenshotTest : UiTestPrerequisites() { } composeTestRule.waitUntil { - composeTestRule.activity.viewModels().value.userWordList.current.value.size == + composeTestRule.activity + .viewModels() + .value.userWordList.current.value.size == SeedPhrase.SEED_PHRASE_SIZE } - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.restore_seed_button_next), - ignoreCase = true - ).also { - // Even with waiting for the word list in the view model, there's some latency before the button is enabled - composeTestRule.waitUntil(5.seconds.inWholeMilliseconds) { - runCatching { it.assertIsEnabled() }.isSuccess + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.restore_seed_button_next), + ignoreCase = true + ).also { + // Even with waiting for the word list in the view model, there's some latency before the button is + // enabled + composeTestRule.waitUntil(5.seconds.inWholeMilliseconds) { + runCatching { it.assertIsEnabled() }.isSuccess + } + it.performScrollTo() + it.performClick() } - it.performScrollTo() - it.performClick() - } composeTestRule.onNodeWithText(resContext.getString(R.string.restore_birthday_header)).also { it.assertExists() @@ -250,28 +255,31 @@ class ScreenshotTest : UiTestPrerequisites() { takeScreenshot(tag, "Import 3") - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.restore_birthday_button_restore), - ignoreCase = true - ).also { - it.performScrollTo() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.restore_birthday_button_restore), + ignoreCase = true + ).also { + it.performScrollTo() + it.performClick() + } composeTestRule.waitUntil(DEFAULT_TIMEOUT_MILLISECONDS) { - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.restore_success_button), - ignoreCase = true - ).exists() + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.restore_success_button), + ignoreCase = true + ).exists() } - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.restore_success_button), - ignoreCase = true - ).also { - it.performScrollTo() - it.performClick() - } + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.restore_success_button), + ignoreCase = true + ).also { + it.performScrollTo() + it.performClick() + } composeTestRule.waitUntil(DEFAULT_TIMEOUT_MILLISECONDS) { composeTestRule.activity.walletViewModel.currentWalletSnapshot.value != null @@ -390,58 +398,64 @@ private fun onboardingScreenshots( } // Welcome screen - composeTestRule.onNodeWithText( - resContext.getString(R.string.onboarding_header, ZcashCurrency.getLocalizedName(resContext)), - useUnmergedTree = true - ).also { - it.assertExists() - ScreenshotTest.takeScreenshot(tag, "Onboarding 1") - } + composeTestRule + .onNodeWithText( + resContext.getString(R.string.onboarding_header, ZcashCurrency.getLocalizedName(resContext)), + useUnmergedTree = true + ).also { + it.assertExists() + ScreenshotTest.takeScreenshot(tag, "Onboarding 1") + } composeTestRule.waitUntilDoesNotExist(hasTestTag(WELCOME_ANIM_TEST_TAG), DEFAULT_TIMEOUT_MILLISECONDS) - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.onboarding_create_new_wallet), - ignoreCase = true, - useUnmergedTree = true - ).also { - it.performClick() - } + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.onboarding_create_new_wallet), + ignoreCase = true, + useUnmergedTree = true + ).also { + it.performClick() + } // Security Warning screen - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.security_warning_acknowledge), - ignoreCase = true, - useUnmergedTree = true - ).also { - it.assertExists() - it.performClick() - ScreenshotTest.takeScreenshot(tag, "Security Warning") - } - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.security_warning_confirm), - ignoreCase = true, - useUnmergedTree = true - ).performClick() + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.security_warning_acknowledge), + ignoreCase = true, + useUnmergedTree = true + ).also { + it.assertExists() + it.performClick() + ScreenshotTest.takeScreenshot(tag, "Security Warning") + } + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.security_warning_confirm), + ignoreCase = true, + useUnmergedTree = true + ).performClick() composeTestRule.waitForIdle() composeTestRule.waitUntil { - composeTestRule.onNodeWithText( + composeTestRule + .onNodeWithText( + text = resContext.getString(R.string.seed_recovery_next_button), + ignoreCase = true, + useUnmergedTree = true + ).exists() + } + + composeTestRule + .onNodeWithText( text = resContext.getString(R.string.seed_recovery_next_button), ignoreCase = true, useUnmergedTree = true - ).exists() - } - - composeTestRule.onNodeWithText( - text = resContext.getString(R.string.seed_recovery_next_button), - ignoreCase = true, - useUnmergedTree = true - ).also { - it.performScrollTo() - it.performClick() - } + ).also { + it.performScrollTo() + it.performClick() + } } private fun accountScreenshots( @@ -480,11 +494,12 @@ private fun settingsScreenshots( tag: String, composeTestRule: ComposeTestRule ) { - composeTestRule.onNode( - hasText(resContext.getString(R.string.settings_feedback), ignoreCase = true) - ).also { - it.assertExists() - } + composeTestRule + .onNode( + hasText(resContext.getString(R.string.settings_feedback), ignoreCase = true) + ).also { + it.assertExists() + } ScreenshotTest.takeScreenshot(tag, "Settings 1") } @@ -494,14 +509,15 @@ private fun receiveZecScreenshots( tag: String, composeTestRule: AndroidComposeTestRule, MainActivity> ) { - composeTestRule.onNode( - hasText( - text = resContext.getString(R.string.receive_header), - ignoreCase = true - ) - ).also { - it.assertExists() - } + composeTestRule + .onNode( + hasText( + text = resContext.getString(R.string.receive_header), + ignoreCase = true + ) + ).also { + it.assertExists() + } ScreenshotTest.takeScreenshot(tag, "Receive 1") } @@ -525,13 +541,14 @@ private fun sendZecScreenshots( // Screenshot: Empty form ScreenshotTest.takeScreenshot(tag, "Send 1") - composeTestRule.onNode( - hasTestTag(SendTag.SEND_AMOUNT_FIELD) - ).also { - val separators = MonetarySeparators.current() + composeTestRule + .onNode( + hasTestTag(SendTag.SEND_AMOUNT_FIELD) + ).also { + val separators = MonetarySeparators.current() - it.performTextInput("0${separators.decimal}123") - } + it.performTextInput("0${separators.decimal}123") + } composeTestRule.onNodeWithText(resContext.getString(R.string.send_address_hint)).also { it.performTextInput(WalletAddressFixture.UNIFIED_ADDRESS_STRING) @@ -580,11 +597,12 @@ private fun aboutScreenshots( tag: String, composeTestRule: ComposeTestRule ) { - composeTestRule.onNode( - hasText(resContext.getString(R.string.about_title).uppercase()) - ).also { - it.assertExists() - } + composeTestRule + .onNode( + hasText(resContext.getString(R.string.about_title).uppercase()) + ).also { + it.assertExists() + } ScreenshotTest.takeScreenshot(tag, "About 1") } @@ -602,11 +620,10 @@ private fun seedScreenshots( } @Suppress("SwallowedException", "TooGenericExceptionCaught") -private fun SemanticsNodeInteraction.exists(): Boolean { - return try { +private fun SemanticsNodeInteraction.exists(): Boolean = + try { this.assertExists() true } catch (e: Throwable) { false } -} diff --git a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ZcashUiTestRunner.kt b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ZcashUiTestRunner.kt index d8b657f8c..3b7287501 100644 --- a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ZcashUiTestRunner.kt +++ b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ZcashUiTestRunner.kt @@ -21,9 +21,7 @@ class ZcashScreenshotTestRunner : ZcashUiTestRunner() { cl: ClassLoader?, className: String?, context: Context? - ): Application { - return super.newApplication(cl, ZcashUiTestApplication::class.java.name, context) - } + ): Application = super.newApplication(cl, ZcashUiTestApplication::class.java.name, context) } class ZcashUiTestApplication : Application() { From a4bc273c9263f7cf7c3bb1a55a797bfb2fe3e181 Mon Sep 17 00:00:00 2001 From: Honza Date: Wed, 12 Mar 2025 13:00:00 +0100 Subject: [PATCH 20/31] Detekt Compose 0.4.22 + Detekt plugin 1.23.8 --- build-conventions-secant/gradle.lockfile | 2 +- buildscript-gradle.lockfile | 2 +- gradle.properties | 4 +- .../zcash/ui/design/component/Override.kt | 9 ++-- .../zcash/ui/design/component/PagerTabs.kt | 4 +- .../design/component/listitem/BaseListItem.kt | 2 +- .../component/listitem/ZashiListItem.kt | 26 +++++------ .../checkbox/ZashiExpandedCheckboxListItem.kt | 2 +- .../screen/scan/view/ScanViewTestSetup.kt | 4 +- .../view/RestoreViewSecuredScreenTest.kt | 2 +- .../ui/screen/restore/view/RestoreViewTest.kt | 2 +- .../scan/view/ScanViewBasicTestSetup.kt | 4 +- .../view/SecurityWarningViewTestSetup.kt | 2 +- .../co/electriccoin/zcash/ui/MainActivity.kt | 2 +- .../co/electriccoin/zcash/ui/Navigation.kt | 2 +- .../common/compose/SynchronizationStatus.kt | 4 +- .../ui/screen/account/view/AccountView.kt | 2 +- .../accountlist/view/AccountListView.kt | 22 ++++----- .../authentication/AndroidAuthentication.kt | 38 +++++++-------- .../ui/screen/balances/view/BalancesView.kt | 16 +++---- .../exchangerate/BaseExchangeRateOptIn.kt | 2 +- .../zcash/ui/screen/home/view/HomeView.kt | 2 +- .../ui/screen/receive/view/ReceiveView.kt | 2 +- .../zcash/ui/screen/restore/AndroidRestore.kt | 2 +- .../ui/screen/restore/view/RestoreView.kt | 22 ++++----- .../restoresuccess/AndroidRestoreSuccess.kt | 4 +- .../zcash/ui/screen/scan/AndroidScan.kt | 4 +- .../zcash/ui/screen/scan/view/ScanView.kt | 46 ++++++++++--------- .../AndroidScanKeystonePCZTRequest.kt | 4 +- .../AndroidScanKeystoneSignInRequest.kt | 4 +- .../scankeystone/view/ScanKeystoneView.kt | 41 +++++++++-------- .../securitywarning/AndroidSecurityWarning.kt | 2 +- .../view/SecurityWarningView.kt | 12 ++--- .../zcash/ui/screen/send/view/SendView.kt | 8 ++-- 34 files changed, 156 insertions(+), 150 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index 94bb5ab02..fd83477a3 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -84,7 +84,7 @@ com.vdurmont:semver4j:3.1.0=runtimeClasspath commons-codec:commons-codec:1.15=compileClasspath,runtimeClasspath commons-io:commons-io:2.16.1=runtimeClasspath commons-logging:commons-logging:1.2=compileClasspath,runtimeClasspath -io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6=compileClasspath,runtimeClasspath +io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=compileClasspath,runtimeClasspath io.grpc:grpc-api:1.57.2=runtimeClasspath io.grpc:grpc-context:1.27.2=compileClasspath io.grpc:grpc-context:1.57.2=runtimeClasspath diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 573e3062e..3e08fe11c 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -96,7 +96,7 @@ com.vdurmont:semver4j:3.1.0=classpath commons-codec:commons-codec:1.15=classpath commons-io:commons-io:2.16.1=classpath commons-logging:commons-logging:1.2=classpath -io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6=classpath +io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=classpath io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.19.0=classpathCopy io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.20.0=classpathCopy2 io.grpc:grpc-api:1.57.2=classpath diff --git a/gradle.properties b/gradle.properties index df081937c..4cbec3664 100644 --- a/gradle.properties +++ b/gradle.properties @@ -152,8 +152,8 @@ ANDROID_COMPILE_SDK_VERSION=35 ANDROID_NDK_VERSION=27.0.12077973 ANDROID_GRADLE_PLUGIN_VERSION=8.9.0 -DETEKT_VERSION=1.23.6 -DETEKT_COMPOSE_RULES_VERSION=0.3.15 +DETEKT_VERSION=1.23.8 +DETEKT_COMPOSE_RULES_VERSION=0.4.22 EMULATOR_WTF_GRADLE_PLUGIN_VERSION=0.16.2 FIREBASE_CRASHLYTICS_BUILD_TOOLS_VERSION=3.0.3 FLANK_VERSION=23.10.1 diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt index b54e6d708..f531c29aa 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/Override.kt @@ -6,6 +6,8 @@ import android.view.ContextThemeWrapper import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.movableContentOf +import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import kotlinx.coroutines.flow.StateFlow @@ -17,12 +19,13 @@ import kotlinx.coroutines.flow.StateFlow @Composable fun Override( configurationOverrideFlow: StateFlow, - content: @Composable () -> Unit + content: @Composable () -> Unit, ) { val configurationOverride = configurationOverrideFlow.collectAsState().value + val contentSlot = remember { movableContentOf { content() } } if (null == configurationOverride) { - content() + contentSlot() } else { val configuration = configurationOverride.newConfiguration(LocalConfiguration.current) @@ -40,7 +43,7 @@ fun Override( LocalConfiguration provides configuration, LocalContext provides contextWrapper ) { - content() + contentSlot() } } } diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt index 98a0cc5fc..f37ef2aab 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/PagerTabs.kt @@ -60,7 +60,7 @@ fun PagerTabs( tabs: ImmutableList, modifier: Modifier = Modifier, coroutineScope: CoroutineScope = rememberCoroutineScope(), - onTabSelected: (index: Int) -> Unit = {}, + onTabSelect: (index: Int) -> Unit = {}, ) { TabRow( modifier = modifier.border(ZcashTheme.dimens.spacingTiny, ZcashTheme.colors.layoutStroke), @@ -74,7 +74,7 @@ fun PagerTabs( selected = pagerState.currentPage == index, onClick = { coroutineScope.launch { - onTabSelected(index) + onTabSelect(index) pagerState.animateScrollToPage(index) } }, diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/BaseListItem.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/BaseListItem.kt index 743bdc576..0938f0977 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/BaseListItem.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/BaseListItem.kt @@ -27,7 +27,6 @@ import androidx.compose.ui.unit.dp @Composable fun BaseListItem( leading: @Composable ((Modifier) -> Unit)?, - content: @Composable (Modifier) -> Unit, trailing: @Composable ((Modifier) -> Unit)?, onClick: (() -> Unit)?, contentPadding: PaddingValues, @@ -36,6 +35,7 @@ fun BaseListItem( shape: Shape = RoundedCornerShape(16.dp), border: BorderStroke? = null, color: Color = Color.Transparent, + content: @Composable (Modifier) -> Unit, ) { Surface( modifier = modifier, diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt index 3c74db00c..0414679d1 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/ZashiListItem.kt @@ -73,6 +73,12 @@ fun ZashiListItem( fun ZashiListItem( state: ZashiListItemState, modifier: Modifier = Modifier, + contentPadding: PaddingValues = ZashiListItemDefaults.contentPadding, + colors: ZashiListItemColors = + when (state.design) { + ZashiListItemDesignType.PRIMARY -> ZashiListItemDefaults.primaryColors() + ZashiListItemDesignType.SECONDARY -> ZashiListItemDefaults.secondaryColors() + }, leading: @Composable (Modifier) -> Unit = { ZashiListItemDefaults.LeadingItem( modifier = it, @@ -80,6 +86,13 @@ fun ZashiListItem( contentDescription = state.title.getValue() ) }, + trailing: @Composable (Modifier) -> Unit = { + ZashiListItemDefaults.TrailingItem( + modifier = it, + isEnabled = state.isEnabled && state.onClick != null, + contentDescription = state.title.getValue() + ) + }, content: @Composable (Modifier) -> Unit = { ZashiListItemDefaults.ContentItem( modifier = it, @@ -89,19 +102,6 @@ fun ZashiListItem( isEnabled = state.isEnabled ) }, - trailing: @Composable (Modifier) -> Unit = { - ZashiListItemDefaults.TrailingItem( - modifier = it, - isEnabled = state.isEnabled && state.onClick != null, - contentDescription = state.title.getValue() - ) - }, - contentPadding: PaddingValues = ZashiListItemDefaults.contentPadding, - colors: ZashiListItemColors = - when (state.design) { - ZashiListItemDesignType.PRIMARY -> ZashiListItemDefaults.primaryColors() - ZashiListItemDesignType.SECONDARY -> ZashiListItemDefaults.secondaryColors() - } ) { BaseListItem( modifier = modifier, diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/checkbox/ZashiExpandedCheckboxListItem.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/checkbox/ZashiExpandedCheckboxListItem.kt index 8f9ab8f96..da674b90e 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/checkbox/ZashiExpandedCheckboxListItem.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/listitem/checkbox/ZashiExpandedCheckboxListItem.kt @@ -114,11 +114,11 @@ private fun ExpandedBaseListItem( contentPadding: PaddingValues, onClick: (() -> Unit)?, leading: @Composable (Modifier) -> Unit, - content: @Composable (Modifier) -> Unit, trailing: @Composable (Modifier) -> Unit, below: @Composable ColumnScope.(Modifier) -> Unit, modifier: Modifier = Modifier, border: BorderStroke? = null, + content: @Composable (Modifier) -> Unit, ) { Surface( modifier = modifier, diff --git a/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTestSetup.kt b/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTestSetup.kt index d90894d44..465eb844e 100644 --- a/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTestSetup.kt +++ b/ui-integration-test/src/main/java/co/electriccoin/zcash/ui/integration/test/screen/scan/view/ScanViewTestSetup.kt @@ -52,12 +52,12 @@ class ScanViewTestSetup( Scan( snackbarHostState = SnackbarHostState(), onBack = {}, - onScanned = {}, + onScan = {}, onScanError = {}, onOpenSettings = { onOpenSettingsCount.incrementAndGet() }, - onScanStateChanged = { + onScanStateChange = { scanState.set(it) }, topAppBarSubTitleState = TopAppBarSubTitleState.None, diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt index 64944693a..a715a535b 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewSecuredScreenTest.kt @@ -54,7 +54,7 @@ class RestoreViewSecuredScreenTest : UiTestPrerequisites() { setRestoreHeight = {}, onBack = { }, paste = { "" }, - onFinished = { } + onFinish = { } ) } } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt index 8b5773895..9b46f11ec 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreViewTest.kt @@ -423,7 +423,7 @@ class RestoreViewTest : UiTestPrerequisites() { onBackCount.incrementAndGet() }, paste = { "" }, - onFinished = { + onFinish = { onFinishedCount.incrementAndGet() } ) diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTestSetup.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTestSetup.kt index 26da8f74b..04b1e6966 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTestSetup.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/scan/view/ScanViewBasicTestSetup.kt @@ -34,10 +34,10 @@ class ScanViewBasicTestSetup( onBack = { onBackCount.incrementAndGet() }, - onScanned = {}, + onScan = {}, onScanError = {}, onOpenSettings = {}, - onScanStateChanged = { + onScanStateChange = { scanState.set(it) }, snackbarHostState = SnackbarHostState(), diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt index ea13890a4..7d4f370b8 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningViewTestSetup.kt @@ -38,7 +38,7 @@ class SecurityWarningViewTestSetup( onBack = { onBackCount.incrementAndGet() }, - onAcknowledged = { + onAcknowledge = { onAcknowledged.getAndSet(it) }, onConfirm = { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt index a9f89c355..fe5e75107 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/MainActivity.kt @@ -219,7 +219,7 @@ class MainActivity : FragmentActivity() { onCancel = { authenticationViewModel.setAuthFailed() }, - onFailed = { + onFail = { authenticationViewModel.setAuthFailed() }, useCase = AuthenticationUseCase.AppAccess diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt index 7cb97852b..cdca320dc 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt @@ -520,7 +520,7 @@ private fun MainActivity.ShowSystemAuthentication( onCancel = { setCheckedProperty(false) }, - onFailed = { + onFail = { // No action needed }, useCase = protectedUseCase diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/SynchronizationStatus.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/SynchronizationStatus.kt index 43b8a0f64..2ca081335 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/SynchronizationStatus.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/SynchronizationStatus.kt @@ -121,7 +121,7 @@ private fun PercentDecimal.toCheckedProgress(status: Synchronizer.Status): Strin @Composable fun StatusDialog( statusAction: StatusAction.Detailed, - onDone: () -> Unit, + onConfirm: () -> Unit, onReport: (StatusAction.Error) -> Unit, ) { AppAlertDialog( @@ -137,7 +137,7 @@ fun StatusDialog( } }, confirmButtonText = stringResource(id = R.string.balances_status_dialog_ok_button), - onConfirmButtonClick = onDone, + onConfirmButtonClick = onConfirm, // Add the report button only for the StatusAction.Error type and non-null full stacktrace value dismissButtonText = if (statusAction.isReportable()) { diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/view/AccountView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/view/AccountView.kt index 0b9f62910..4e3e3c329 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/view/AccountView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/account/view/AccountView.kt @@ -155,7 +155,7 @@ internal fun Account( if (showStatusDialog != null) { StatusDialog( statusAction = showStatusDialog, - onDone = hideStatusDialog, + onConfirm = hideStatusDialog, onReport = { status -> hideStatusDialog() onContactSupport(status) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt index f450e8bab..cae1b4853 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt @@ -135,6 +135,17 @@ private fun ZashiKeystonePromoListItem(item: AccountListItem.Other) { private fun ZashiKeystonePromoListItem( state: ZashiListItemState, modifier: Modifier = Modifier, + contentPadding: PaddingValues = PaddingValues(24.dp), + colors: ZashiListItemColors = + ZashiListItemDefaults.primaryColors( + backgroundColor = ZashiColors.Surfaces.bgTertiary + ), + below: @Composable ColumnScope.(Modifier) -> Unit = { + Image( + painter = painterResource(co.electriccoin.zcash.ui.R.drawable.img_keystone_promo), + contentDescription = null + ) + }, content: @Composable (Modifier) -> Unit = { ZashiKeystonePromoListContent( modifier = it, @@ -143,17 +154,6 @@ private fun ZashiKeystonePromoListItem( isEnabled = state.isEnabled ) }, - below: @Composable ColumnScope.(Modifier) -> Unit = { - Image( - painter = painterResource(co.electriccoin.zcash.ui.R.drawable.img_keystone_promo), - contentDescription = null - ) - }, - contentPadding: PaddingValues = PaddingValues(24.dp), - colors: ZashiListItemColors = - ZashiListItemDefaults.primaryColors( - backgroundColor = ZashiColors.Surfaces.bgTertiary - ) ) { BaseListItem( modifier = modifier, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt index 05cde1899..88be6c573 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/authentication/AndroidAuthentication.kt @@ -28,7 +28,7 @@ internal const val RETRY_TRIGGER_DELAY = 0 internal fun MainActivity.WrapAuthentication( onSuccess: () -> Unit, onCancel: () -> Unit, - onFailed: () -> Unit, + onFail: () -> Unit, useCase: AuthenticationUseCase, goSupport: (() -> Unit)? = null, ) { @@ -37,7 +37,7 @@ internal fun MainActivity.WrapAuthentication( goSupport = goSupport, onSuccess = onSuccess, onCancel = onCancel, - onFailed = onFailed, + onFail = onFail, useCase = useCase ) } @@ -48,7 +48,7 @@ private fun WrapAuthenticationUseCases( activity: MainActivity, onSuccess: () -> Unit, onCancel: () -> Unit, - onFailed: () -> Unit, + onFail: () -> Unit, useCase: AuthenticationUseCase, goSupport: (() -> Unit)? = null, ) { @@ -59,7 +59,7 @@ private fun WrapAuthenticationUseCases( activity = activity, goToAppContent = onSuccess, onCancel = onCancel, - onFailed = onFailed + onFail = onFail ) } AuthenticationUseCase.ExportPrivateData -> { @@ -69,7 +69,7 @@ private fun WrapAuthenticationUseCases( goExportPrivateData = onSuccess, goSupport = goSupport ?: {}, onCancel = onCancel, - onFailed = onFailed + onFail = onFail ) } AuthenticationUseCase.DeleteWallet -> { @@ -79,7 +79,7 @@ private fun WrapAuthenticationUseCases( goDeleteWallet = onSuccess, goSupport = goSupport ?: {}, onCancel = onCancel, - onFailed = onFailed + onFail = onFail ) } AuthenticationUseCase.SeedRecovery -> { @@ -89,7 +89,7 @@ private fun WrapAuthenticationUseCases( goSeedRecovery = onSuccess, goSupport = goSupport ?: {}, onCancel = onCancel, - onFailed = onFailed + onFail = onFail ) } AuthenticationUseCase.SendFunds -> { @@ -99,7 +99,7 @@ private fun WrapAuthenticationUseCases( onSendFunds = onSuccess, goSupport = goSupport ?: {}, onCancel = onCancel, - onFailed = onFailed + onFail = onFail ) } } @@ -111,7 +111,7 @@ private fun WrapDeleteWalletAuth( goSupport: () -> Unit, goDeleteWallet: () -> Unit, onCancel: () -> Unit, - onFailed: () -> Unit, + onFail: () -> Unit, ) { val authenticationViewModel = koinActivityViewModel() @@ -138,7 +138,7 @@ private fun WrapDeleteWalletAuth( AuthenticationResult.Failed -> { Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() - onFailed() + onFail() Toast .makeText(activity, activity.getString(R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() @@ -186,7 +186,7 @@ private fun WrapAppExportPrivateDataAuth( goSupport: () -> Unit, goExportPrivateData: () -> Unit, onCancel: () -> Unit, - onFailed: () -> Unit, + onFail: () -> Unit, ) { val authenticationViewModel = koinActivityViewModel() @@ -213,7 +213,7 @@ private fun WrapAppExportPrivateDataAuth( AuthenticationResult.Failed -> { Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() - onFailed() + onFail() Toast .makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() @@ -261,7 +261,7 @@ private fun WrapSeedRecoveryAuth( goSupport: () -> Unit, goSeedRecovery: () -> Unit, onCancel: () -> Unit, - onFailed: () -> Unit, + onFail: () -> Unit, ) { val authenticationViewModel = koinActivityViewModel() @@ -288,7 +288,7 @@ private fun WrapSeedRecoveryAuth( AuthenticationResult.Failed -> { Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() - onFailed() + onFail() Toast .makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() @@ -337,7 +337,7 @@ private fun WrapSendFundsAuth( goSupport: () -> Unit, onSendFunds: () -> Unit, onCancel: () -> Unit, - onFailed: () -> Unit, + onFail: () -> Unit, ) { val authenticationViewModel = koinActivityViewModel() @@ -364,7 +364,7 @@ private fun WrapSendFundsAuth( AuthenticationResult.Failed -> { Twig.warn { "Authentication result: failed" } authenticationViewModel.resetAuthenticationResult() - onFailed() + onFail() Toast .makeText(activity, stringResource(id = R.string.authentication_toast_failed), Toast.LENGTH_SHORT) .show() @@ -412,7 +412,7 @@ private fun WrapAppAccessAuth( activity: MainActivity, goToAppContent: () -> Unit, onCancel: () -> Unit, - onFailed: () -> Unit, + onFail: () -> Unit, ) { val authenticationViewModel = koinActivityViewModel() @@ -459,13 +459,13 @@ private fun WrapAppAccessAuth( } AuthenticationResult.Failed -> { Twig.warn { "Authentication result: failed" } - onFailed() + onFail() } is AuthenticationResult.Error -> { Twig.error { "Authentication result: error: ${authenticationResult.errorCode}: ${authenticationResult.errorMessage}" } - onFailed() + onFail() } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesView.kt index 34d14d0db..7b50f450b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/balances/view/BalancesView.kt @@ -135,7 +135,7 @@ private fun ComposableBalancesShieldErrorDialogPreview() { BlankSurface { ShieldingErrorDialog( state = ShieldState.Failed("Test Error Text", "Test Error Stacktrace"), - onDone = {}, + onConfirm = {}, onReport = {} ) } @@ -187,7 +187,7 @@ fun Balances( if (showStatusDialog != null) { StatusDialog( statusAction = showStatusDialog, - onDone = hideStatusDialog, + onConfirm = hideStatusDialog, onReport = { status -> hideStatusDialog() onContactSupport(status.fullStackTrace) @@ -201,7 +201,7 @@ fun Balances( is ShieldState.Failed -> { ShieldingErrorDialog( state = shieldState, - onDone = { setShowErrorDialog(false) }, + onConfirm = { setShowErrorDialog(false) }, onReport = { state -> setShowErrorDialog(false) onContactSupport(state.stackTrace) @@ -211,7 +211,7 @@ fun Balances( ShieldState.FailedGrpc -> { ShieldingErrorGrpcDialog( - onDone = { setShowErrorDialog(false) } + onComplete = { setShowErrorDialog(false) } ) } @@ -226,7 +226,7 @@ fun Balances( @Composable fun ShieldingErrorDialog( state: ShieldState.Failed, - onDone: () -> Unit, + onConfirm: () -> Unit, onReport: (ShieldState.Failed) -> Unit, ) { AppAlertDialog( @@ -252,14 +252,14 @@ fun ShieldingErrorDialog( } }, confirmButtonText = stringResource(id = R.string.balances_shielding_dialog_error_btn), - onConfirmButtonClick = onDone, + onConfirmButtonClick = onConfirm, dismissButtonText = stringResource(id = R.string.balances_shielding_dialog_report_btn), onDismissButtonClick = { onReport(state) }, ) } @Composable -fun ShieldingErrorGrpcDialog(onDone: () -> Unit) { +fun ShieldingErrorGrpcDialog(onComplete: () -> Unit) { AppAlertDialog( title = stringResource(id = R.string.balances_shielding_dialog_error_grpc_title), text = { @@ -273,7 +273,7 @@ fun ShieldingErrorGrpcDialog(onDone: () -> Unit) { } }, confirmButtonText = stringResource(id = R.string.balances_shielding_dialog_error_grpc_btn), - onConfirmButtonClick = onDone + onConfirmButtonClick = onComplete ) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/BaseExchangeRateOptIn.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/BaseExchangeRateOptIn.kt index 0db2d3ee9..089eba79c 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/BaseExchangeRateOptIn.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/exchangerate/BaseExchangeRateOptIn.kt @@ -33,8 +33,8 @@ import co.electriccoin.zcash.ui.design.util.scaffoldPadding @Composable internal fun BaseExchangeRateOptIn( onDismiss: () -> Unit, - content: @Composable ColumnScope.() -> Unit, footer: @Composable ColumnScope.() -> Unit, + content: @Composable ColumnScope.() -> Unit, ) { Scaffold { paddingValues -> Column( diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt index c1a83361e..5e70c54e8 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt @@ -75,7 +75,7 @@ fun Home( ) if (isShowingRestoreSuccess) { - WrapRestoreSuccess(onDone = setShowingRestoreSuccess) + WrapRestoreSuccess(onComplete = setShowingRestoreSuccess) } if (isKeepScreenOnWhileSyncing == true && diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt index 7ebef44f9..9a1335318 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/receive/view/ReceiveView.kt @@ -231,8 +231,8 @@ private fun ReceiveIconButton( contentColor: Color, iconPainter: Painter, text: String, - modifier: Modifier = Modifier, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { Column( horizontalAlignment = Alignment.CenterHorizontally, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/AndroidRestore.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/AndroidRestore.kt index 041f9b1de..0da0e4df1 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/AndroidRestore.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/AndroidRestore.kt @@ -46,7 +46,7 @@ fun WrapRestore() { val clipboardManager = applicationContext.getSystemService(ClipboardManager::class.java) return@RestoreWallet clipboardManager?.primaryClip?.toString() }, - onFinished = { + onFinish = { persistExistingWalletWithSeedPhrase( applicationContext, walletViewModel, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt index 8c8670469..1ed48f347 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/view/RestoreView.kt @@ -113,7 +113,7 @@ private fun RestoreSeedPreview() { setRestoreHeight = {}, onBack = {}, paste = { "" }, - onFinished = {} + onFinish = {} ) } } @@ -143,7 +143,7 @@ private fun RestoreSeedDarkPreview() { setRestoreHeight = {}, onBack = {}, paste = { "" }, - onFinished = {} + onFinish = {} ) } } @@ -173,7 +173,7 @@ private fun RestoreBirthdayPreview() { setRestoreHeight = {}, onBack = {}, paste = { "" }, - onFinished = {} + onFinish = {} ) } } @@ -203,7 +203,7 @@ private fun RestoreBirthdayDarkPreview() { setRestoreHeight = {}, onBack = {}, paste = { "" }, - onFinished = {} + onFinish = {} ) } } @@ -224,7 +224,7 @@ fun RestoreWallet( setRestoreHeight: (BlockHeight?) -> Unit, onBack: () -> Unit, paste: () -> String?, - onFinished: () -> Unit + onFinish: () -> Unit ) { var text by rememberSaveable { mutableStateOf("") } val parseResult = ParseResult.new(completeWordList, text) @@ -328,7 +328,7 @@ fun RestoreWallet( zcashNetwork = zcashNetwork, initialRestoreHeight = restoreHeight, setRestoreHeight = setRestoreHeight, - onDone = onFinished, + onComplete = onFinish, modifier = commonModifier .imePadding() @@ -342,8 +342,8 @@ fun RestoreWallet( @Composable private fun ClearSeedMenuItem( - modifier: Modifier = Modifier, onSeedClear: () -> Unit, + modifier: Modifier = Modifier, ) { Reference( text = stringResource(id = R.string.restore_button_clear), @@ -669,7 +669,7 @@ fun processTextInput( @Suppress("UNUSED_VARIABLE") private fun Autocomplete( parseResult: ParseResult, - onSuggestionSelected: (String) -> Unit, + onSuggestionSelect: (String) -> Unit, modifier: Modifier = Modifier ) { // TODO [#1061]: Restore screen input validation refactoring and adding tests @@ -701,7 +701,7 @@ private fun Autocomplete( items(it) { ChipOnSurface( text = it, - onClick = { onSuggestionSelected(it) }, + onClick = { onSuggestionSelect(it) }, modifier = Modifier.testTag(RestoreTag.AUTOCOMPLETE_ITEM) ) } @@ -756,7 +756,7 @@ private fun RestoreBirthdayMainContent( zcashNetwork: ZcashNetwork, initialRestoreHeight: BlockHeight?, setRestoreHeight: (BlockHeight?) -> Unit, - onDone: () -> Unit, + onComplete: () -> Unit, modifier: Modifier = Modifier ) { val scrollState = rememberScrollState() @@ -844,7 +844,7 @@ private fun RestoreBirthdayMainContent( } else { error("The restore button should not expect click events") } - onDone() + onComplete() }, text = stringResource(R.string.restore_birthday_button_restore), enabled = isBirthdayValid, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restoresuccess/AndroidRestoreSuccess.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restoresuccess/AndroidRestoreSuccess.kt index be477eebc..e49efaa2a 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restoresuccess/AndroidRestoreSuccess.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restoresuccess/AndroidRestoreSuccess.kt @@ -7,7 +7,7 @@ import co.electriccoin.zcash.ui.screen.restoresuccess.view.RestoreSuccess import co.electriccoin.zcash.ui.screen.restoresuccess.viewmodel.RestoreSuccessViewModel @Composable -fun WrapRestoreSuccess(onDone: () -> Unit) { +fun WrapRestoreSuccess(onComplete: () -> Unit) { val viewModel = koinActivityViewModel() val state = viewModel.state.collectAsStateWithLifecycle().value @@ -17,7 +17,7 @@ fun WrapRestoreSuccess(onDone: () -> Unit) { state.copy( onPositiveClick = { state.onPositiveClick() - onDone() + onComplete() } ) ) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/AndroidScan.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/AndroidScan.kt index 727871f83..4e3abf5fa 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/AndroidScan.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/AndroidScan.kt @@ -70,7 +70,7 @@ internal fun WrapScanValidator(args: ScanNavigationArgs) { snackbarHostState = snackbarHostState, validationResult = state, onBack = { navController.popBackStackJustOnce(ScanNavigationArgs.ROUTE) }, - onScanned = { + onScan = { viewModel.onScanned(it) }, onScanError = { @@ -89,7 +89,7 @@ internal fun WrapScanValidator(args: ScanNavigationArgs) { } } }, - onScanStateChanged = {}, + onScanStateChange = {}, topAppBarSubTitleState = walletState, ) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt index 74388f2bc..fdeda17a1 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt @@ -110,10 +110,10 @@ import kotlinx.coroutines.launch fun Scan( snackbarHostState: SnackbarHostState, onBack: () -> Unit, - onScanned: (String) -> Unit, + onScan: (String) -> Unit, onScanError: () -> Unit, onOpenSettings: () -> Unit, - onScanStateChanged: (ScanScreenState) -> Unit, + onScanStateChange: (ScanScreenState) -> Unit, topAppBarSubTitleState: TopAppBarSubTitleState, validationResult: ScanValidationState ) = ZcashTheme(forceDarkMode = true) { @@ -157,11 +157,11 @@ fun Scan( Box { ScanMainContent( validationResult = validationResult, - onScanned = onScanned, + onScan = onScan, onScanError = onScanError, onOpenSettings = onOpenSettings, onBack = onBack, - onScanStateChanged = onScanStateChanged, + onScanStateChange = onScanStateChange, permissionState = permissionState, scanState = scanState, setScanState = setScanState, @@ -297,11 +297,11 @@ private fun ScanTopAppBar( @Composable private fun ScanMainContent( validationResult: ScanValidationState, - onScanned: (String) -> Unit, + onScan: (String) -> Unit, onScanError: () -> Unit, onOpenSettings: () -> Unit, onBack: () -> Unit, - onScanStateChanged: (ScanScreenState) -> Unit, + onScanStateChange: (ScanScreenState) -> Unit, permissionState: PermissionState, scanState: ScanScreenState, setScanState: (ScanScreenState) -> Unit, @@ -356,7 +356,7 @@ private fun ScanMainContent( if (qrCode == null) { onScanError() } else { - onScanned(qrCode) + onScan(qrCode) } } } @@ -403,17 +403,17 @@ private fun ScanMainContent( when (scanState) { ScanScreenState.Permission -> { // Keep initial ui state - onScanStateChanged(ScanScreenState.Permission) + onScanStateChange(ScanScreenState.Permission) } ScanScreenState.Scanning -> { - onScanStateChanged(ScanScreenState.Scanning) + onScanStateChange(ScanScreenState.Scanning) if (!LocalInspectionMode.current) { ScanCameraView( framePosition = framePosition, isTorchOn = isTorchOn, - onScanned = onScanned, + onScan = onScan, permissionState = permissionState, setScanState = setScanState, ) @@ -456,9 +456,10 @@ private fun ScanMainContent( ImageButton( painter = painterResource(R.drawable.ic_scan_gallery), contentDescription = stringResource(id = R.string.gallery_content_description), - ) { - galleryLauncher.launch("image/*") - } + onClick = { + galleryLauncher.launch("image/*") + } + ) Spacer(modifier = Modifier.width(16.dp)) @@ -470,14 +471,15 @@ private fun ScanMainContent( painterResource(R.drawable.ic_scan_torch) }, contentDescription = stringResource(id = R.string.scan_torch_content_description), - ) { - setIsTorchOn(!isTorchOn) - } + onClick = { + setIsTorchOn(!isTorchOn) + } + ) } } ScanScreenState.Failed -> { - onScanStateChanged(ScanScreenState.Failed) + onScanStateChange(ScanScreenState.Failed) } } @@ -548,8 +550,8 @@ private fun ScanMainContent( private fun ImageButton( painter: Painter, contentDescription: String, - modifier: Modifier = Modifier, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { Image( painter = painter, @@ -612,7 +614,7 @@ fun ScanFrame(modifier: Modifier = Modifier) { fun ScanCameraView( framePosition: FramePosition, isTorchOn: Boolean, - onScanned: (result: String) -> Unit, + onScan: (result: String) -> Unit, permissionState: PermissionState, setScanState: (ScanScreenState) -> Unit, ) { @@ -698,7 +700,7 @@ fun ScanCameraView( ).collectAsState(initial = null) .value ?.let { - onScanned(it) + onScan(it) } } } @@ -743,10 +745,10 @@ private fun ScanPreview() = Scan( snackbarHostState = SnackbarHostState(), onBack = {}, - onScanned = {}, + onScan = {}, onScanError = {}, onOpenSettings = {}, - onScanStateChanged = {}, + onScanStateChange = {}, topAppBarSubTitleState = TopAppBarSubTitleState.None, validationResult = ScanValidationState.INVALID, ) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystonePCZTRequest.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystonePCZTRequest.kt index ee83a313e..7612abd15 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystonePCZTRequest.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystonePCZTRequest.kt @@ -47,7 +47,7 @@ internal fun WrapScanKeystonePCZTRequest() { snackbarHostState = snackbarHostState, validationResult = validationState, onBack = { navigationRouter.back() }, - onScanned = { + onScan = { viewModel.onScanned(it) }, onOpenSettings = { @@ -63,7 +63,7 @@ internal fun WrapScanKeystonePCZTRequest() { } } }, - onScanStateChanged = {}, + onScanStateChange = {}, topAppBarSubTitleState = walletState, state = state, ) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystoneSignInRequest.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystoneSignInRequest.kt index a610111e5..f11fea415 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystoneSignInRequest.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/AndroidScanKeystoneSignInRequest.kt @@ -47,7 +47,7 @@ internal fun WrapScanKeystoneSignInRequest() { snackbarHostState = snackbarHostState, validationResult = validationResult, onBack = { navigationRouter.back() }, - onScanned = { + onScan = { viewModel.onScanned(it) }, onOpenSettings = { @@ -63,7 +63,7 @@ internal fun WrapScanKeystoneSignInRequest() { } } }, - onScanStateChanged = {}, + onScanStateChange = {}, topAppBarSubTitleState = walletState, state = state, ) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt index 883c527fe..44fa9c507 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt @@ -108,9 +108,9 @@ import kotlinx.coroutines.guava.await fun ScanKeystoneView( snackbarHostState: SnackbarHostState, onBack: () -> Unit, - onScanned: (String) -> Unit, + onScan: (String) -> Unit, onOpenSettings: () -> Unit, - onScanStateChanged: (ScanScreenState) -> Unit, + onScanStateChange: (ScanScreenState) -> Unit, topAppBarSubTitleState: TopAppBarSubTitleState, validationResult: ScanValidationState, state: ScanKeystoneState, @@ -156,10 +156,10 @@ fun ScanKeystoneView( ScanMainContent( state = state, validationResult = validationResult, - onScanned = onScanned, + onScan = onScan, onOpenSettings = onOpenSettings, onBack = onBack, - onScanStateChanged = onScanStateChanged, + onScanStateChange = onScanStateChange, permissionState = permissionState, scanState = scanState, setScanState = setScanState, @@ -319,10 +319,10 @@ data class FramePosition( private fun ScanMainContent( state: ScanKeystoneState, validationResult: ScanValidationState, - onScanned: (String) -> Unit, + onScan: (String) -> Unit, onOpenSettings: () -> Unit, onBack: () -> Unit, - onScanStateChanged: (ScanScreenState) -> Unit, + onScanStateChange: (ScanScreenState) -> Unit, permissionState: PermissionState, scanState: ScanScreenState, setScanState: (ScanScreenState) -> Unit, @@ -401,17 +401,17 @@ private fun ScanMainContent( when (scanState) { ScanScreenState.Permission -> { // Keep initial ui state - onScanStateChanged(ScanScreenState.Permission) + onScanStateChange(ScanScreenState.Permission) } ScanScreenState.Scanning -> { - onScanStateChanged(ScanScreenState.Scanning) + onScanStateChange(ScanScreenState.Scanning) if (!LocalInspectionMode.current) { ScanCameraView( framePosition = framePosition, isTorchOn = isTorchOn, - onScanned = onScanned, + onScan = onScan, permissionState = permissionState, setScanState = setScanState, ) @@ -490,14 +490,15 @@ private fun ScanMainContent( painterResource(R.drawable.ic_scan_torch) }, contentDescription = stringResource(id = R.string.scan_keystone_torch_content_description), - ) { - setIsTorchOn(!isTorchOn) - } + onClick = { + setIsTorchOn(!isTorchOn) + } + ) } } ScanScreenState.Failed -> { - onScanStateChanged(ScanScreenState.Failed) + onScanStateChange(ScanScreenState.Failed) } } @@ -569,8 +570,8 @@ private fun ScanMainContent( private fun ImageButton( painter: Painter, contentDescription: String, - modifier: Modifier = Modifier, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { Image( painter = painter, @@ -633,7 +634,7 @@ fun ScanFrame(modifier: Modifier = Modifier) { fun ScanCameraView( framePosition: FramePosition, isTorchOn: Boolean, - onScanned: (result: String) -> Unit, + onScan: (result: String) -> Unit, permissionState: PermissionState, setScanState: (ScanScreenState) -> Unit, ) { @@ -719,7 +720,7 @@ fun ScanCameraView( ).collectAsState(initial = null) .value ?.let { - onScanned(it) + onScan(it) } } } @@ -764,9 +765,9 @@ private fun ScanPreview() = ScanKeystoneView( snackbarHostState = SnackbarHostState(), onBack = {}, - onScanned = {}, + onScan = {}, onOpenSettings = {}, - onScanStateChanged = {}, + onScanStateChange = {}, topAppBarSubTitleState = TopAppBarSubTitleState.None, validationResult = ScanValidationState.INVALID, state = @@ -789,9 +790,9 @@ private fun ScanProgressPreview() = ScanKeystoneView( snackbarHostState = SnackbarHostState(), onBack = {}, - onScanned = {}, + onScan = {}, onOpenSettings = {}, - onScanStateChanged = {}, + onScanStateChange = {}, topAppBarSubTitleState = TopAppBarSubTitleState.None, validationResult = ScanValidationState.INVALID, state = diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/AndroidSecurityWarning.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/AndroidSecurityWarning.kt index 1b4c36220..d1cfb2975 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/AndroidSecurityWarning.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/AndroidSecurityWarning.kt @@ -23,7 +23,7 @@ internal fun WrapSecurityWarning( SecurityWarning( versionInfo = VersionInfo.new(activity.applicationContext), onBack = onBack, - onAcknowledged = { + onAcknowledge = { // Needed for UI testing only }, onConfirm = onConfirm diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningView.kt index 5376a21a2..d1a2797f3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/securitywarning/view/SecurityWarningView.kt @@ -39,7 +39,7 @@ private fun SecurityWarningPreview() { SecurityWarning( versionInfo = VersionInfoFixture.new(), onBack = {}, - onAcknowledged = {}, + onAcknowledge = {}, onConfirm = {}, ) } @@ -52,7 +52,7 @@ private fun SecurityWarningDarkPreview() { SecurityWarning( versionInfo = VersionInfoFixture.new(), onBack = {}, - onAcknowledged = {}, + onAcknowledge = {}, onConfirm = {}, ) } @@ -62,7 +62,7 @@ private fun SecurityWarningDarkPreview() { fun SecurityWarning( versionInfo: VersionInfo, onBack: () -> Unit, - onAcknowledged: (Boolean) -> Unit, + onAcknowledge: (Boolean) -> Unit, onConfirm: () -> Unit, ) { BlankBgScaffold( @@ -71,7 +71,7 @@ fun SecurityWarning( ) { paddingValues -> SecurityWarningContent( versionInfo = versionInfo, - onAcknowledged = onAcknowledged, + onAcknowledge = onAcknowledge, onConfirm = onConfirm, modifier = Modifier @@ -98,7 +98,7 @@ private fun SecurityWarningTopAppBar(onBack: () -> Unit) { @Composable private fun SecurityWarningContent( versionInfo: VersionInfo, - onAcknowledged: (Boolean) -> Unit, + onAcknowledge: (Boolean) -> Unit, onConfirm: () -> Unit, modifier: Modifier = Modifier, ) { @@ -125,7 +125,7 @@ private fun SecurityWarningContent( checked = checkedState.value, onCheckedChange = { checkedState.value = it - onAcknowledged(it) + onAcknowledge(it) }, text = stringResource(R.string.security_warning_acknowledge), checkBoxTestTag = SecurityScreenTag.ACKNOWLEDGE_CHECKBOX_TAG diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/view/SendView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/view/SendView.kt index 7d7ab2115..c206e4073 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/view/SendView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/send/view/SendView.kt @@ -269,7 +269,7 @@ private fun SendMainContent( if (sendStage is SendStage.SendFailure) { SendFailure( reason = sendStage.error, - onDone = onBack + onConfirm = onBack ) } } @@ -888,7 +888,7 @@ private fun PreviewSendFailure() { ZcashTheme(forceDarkMode = false) { BlankSurface { SendFailure( - onDone = {}, + onConfirm = {}, reason = "Insufficient balance" ) } @@ -897,7 +897,7 @@ private fun PreviewSendFailure() { @Composable private fun SendFailure( - onDone: () -> Unit, + onConfirm: () -> Unit, reason: String, modifier: Modifier = Modifier ) { @@ -926,7 +926,7 @@ private fun SendFailure( } }, confirmButtonText = stringResource(id = R.string.send_dialog_error_btn), - onConfirmButtonClick = onDone, + onConfirmButtonClick = onConfirm, modifier = modifier ) } From 746f00a026d8ac39770bae3051f25b0b16333ea7 Mon Sep 17 00:00:00 2001 From: Honza Date: Wed, 12 Mar 2025 13:50:40 +0100 Subject: [PATCH 21/31] Wtf Emulators Plugin 0.18.1 --- build-conventions-secant/gradle.lockfile | 22 ++++++++++--------- buildscript-gradle.lockfile | 22 ++++++++++--------- gradle.properties | 2 +- .../zcash/ui/screen/scan/view/ScanView.kt | 2 +- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index fd83477a3..deb394ebb 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -54,11 +54,11 @@ com.google.auth:google-auth-library-oauth2-http:1.18.0=compileClasspath,runtimeC com.google.auto.value:auto-value-annotations:1.10.1=compileClasspath,runtimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath com.google.code.gson:gson:2.10=compileClasspath -com.google.code.gson:gson:2.10.1=runtimeClasspath +com.google.code.gson:gson:2.11.0=runtimeClasspath com.google.crypto.tink:tink:1.7.0=runtimeClasspath com.google.dagger:dagger:2.28.3=runtimeClasspath com.google.errorprone:error_prone_annotations:2.16=compileClasspath -com.google.errorprone:error_prone_annotations:2.18.0=runtimeClasspath +com.google.errorprone:error_prone_annotations:2.27.0=runtimeClasspath com.google.flatbuffers:flatbuffers-java:1.12.0=runtimeClasspath com.google.guava:failureaccess:1.0.1=compileClasspath,runtimeClasspath com.google.guava:guava:31.1-jre=compileClasspath @@ -75,6 +75,7 @@ com.google.protobuf:protobuf-java-util:3.22.3=runtimeClasspath com.google.protobuf:protobuf-java:3.24.4=runtimeClasspath com.google.testing.platform:core-proto:0.0.9-alpha03=runtimeClasspath com.googlecode.juniversalchardet:juniversalchardet:1.0.3=runtimeClasspath +com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1=runtimeClasspath com.squareup:javapoet:1.10.0=runtimeClasspath com.squareup:javawriter:2.5.0=compileClasspath,runtimeClasspath com.sun.activation:javax.activation:1.2.0=runtimeClasspath @@ -82,7 +83,7 @@ com.sun.istack:istack-commons-runtime:3.0.8=runtimeClasspath com.sun.xml.fastinfoset:FastInfoset:1.2.16=runtimeClasspath com.vdurmont:semver4j:3.1.0=runtimeClasspath commons-codec:commons-codec:1.15=compileClasspath,runtimeClasspath -commons-io:commons-io:2.16.1=runtimeClasspath +commons-io:commons-io:2.17.0=runtimeClasspath commons-logging:commons-logging:1.2=compileClasspath,runtimeClasspath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=compileClasspath,runtimeClasspath io.grpc:grpc-api:1.57.2=runtimeClasspath @@ -107,6 +108,7 @@ io.netty:netty-transport:4.1.93.Final=runtimeClasspath io.opencensus:opencensus-api:0.31.1=compileClasspath,runtimeClasspath io.opencensus:opencensus-contrib-http-util:0.31.1=compileClasspath,runtimeClasspath io.perfmark:perfmark-api:0.26.0=runtimeClasspath +io.sweers.autotransient:autotransient:1.0.0=runtimeClasspath jakarta.activation:jakarta.activation-api:1.2.1=runtimeClasspath jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=runtimeClasspath javax.annotation:javax.annotation-api:1.3.2=runtimeClasspath @@ -181,7 +183,6 @@ org.jetbrains:annotations:13.0=compileClasspath,compilePluginsBlocksPluginClassp org.jetbrains:annotations:23.0.0=runtimeClasspath org.jetbrains:markdown-jvm:0.7.3=compileClasspath,runtimeClasspath org.jetbrains:markdown:0.7.3=compileClasspath,runtimeClasspath -org.json:json:20240205=runtimeClasspath org.jvnet.staxex:stax-ex:1.8.1=runtimeClasspath org.ow2.asm:asm-analysis:9.7=runtimeClasspath org.ow2.asm:asm-commons:9.7=runtimeClasspath @@ -190,10 +191,11 @@ org.ow2.asm:asm-util:9.7=runtimeClasspath org.ow2.asm:asm:9.7=compileClasspath,runtimeClasspath org.slf4j:slf4j-api:1.7.30=runtimeClasspath org.tensorflow:tensorflow-lite-metadata:0.2.0=runtimeClasspath -wtf.emulator:gradle-compat-6-1:0.16.2=runtimeClasspath -wtf.emulator:gradle-compat-6-6:0.16.2=runtimeClasspath -wtf.emulator:gradle-compat-7-6:0.16.2=runtimeClasspath -wtf.emulator:gradle-compat-api:0.16.2=runtimeClasspath -wtf.emulator:gradle-compat:0.16.2=runtimeClasspath -wtf.emulator:gradle-plugin:0.16.2=compileClasspath,runtimeClasspath +wtf.emulator:gradle-compat-7-0:0.18.1=runtimeClasspath +wtf.emulator:gradle-compat-7-4:0.18.1=runtimeClasspath +wtf.emulator:gradle-compat-api:0.18.1=runtimeClasspath +wtf.emulator:gradle-compat:0.18.1=runtimeClasspath +wtf.emulator:gradle-plugin-api:0.18.1=compileClasspath,runtimeClasspath +wtf.emulator:gradle-plugin-core:0.18.1=runtimeClasspath +wtf.emulator:gradle-plugin:0.18.1=compileClasspath,runtimeClasspath empty=annotationProcessor,kotlinScriptDefExtensions diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 3e08fe11c..072531aca 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -57,10 +57,10 @@ com.google.auth:google-auth-library-credentials:1.18.0=classpath com.google.auth:google-auth-library-oauth2-http:1.18.0=classpath com.google.auto.value:auto-value-annotations:1.10.1=classpath com.google.code.findbugs:jsr305:3.0.2=classpath -com.google.code.gson:gson:2.10.1=classpath +com.google.code.gson:gson:2.11.0=classpath com.google.crypto.tink:tink:1.7.0=classpath com.google.dagger:dagger:2.28.3=classpath -com.google.errorprone:error_prone_annotations:2.18.0=classpath +com.google.errorprone:error_prone_annotations:2.27.0=classpath com.google.firebase:firebase-crashlytics-buildtools:3.0.3=classpath com.google.firebase:firebase-crashlytics-gradle:3.0.3=classpath com.google.flatbuffers:flatbuffers-java:1.12.0=classpath @@ -82,6 +82,7 @@ com.osacky.flank.gradle:fladle:0.17.5=classpath com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.3=classpathCopy com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.4=classpathCopy2 com.osacky.fulladle:com.osacky.fulladle.gradle.plugin:0.17.5=classpath +com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1=classpath com.squareup.moshi:moshi-kotlin:1.12.0=classpath com.squareup.moshi:moshi:1.12.0=classpath com.squareup.okhttp3:okhttp:4.12.0=classpath @@ -94,7 +95,7 @@ com.sun.istack:istack-commons-runtime:3.0.8=classpath com.sun.xml.fastinfoset:FastInfoset:1.2.16=classpath com.vdurmont:semver4j:3.1.0=classpath commons-codec:commons-codec:1.15=classpath -commons-io:commons-io:2.16.1=classpath +commons-io:commons-io:2.17.0=classpath commons-logging:commons-logging:1.2=classpath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=classpath io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.19.0=classpathCopy @@ -120,6 +121,7 @@ io.netty:netty-transport:4.1.93.Final=classpath io.opencensus:opencensus-api:0.31.1=classpath io.opencensus:opencensus-contrib-http-util:0.31.1=classpath io.perfmark:perfmark-api:0.26.0=classpath +io.sweers.autotransient:autotransient:1.0.0=classpath jakarta.activation:jakarta.activation-api:1.2.1=classpath jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=classpath javax.annotation:javax.annotation-api:1.3.2=classpath @@ -176,7 +178,6 @@ org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=classpath org.jetbrains:annotations:13.0=classpath org.jetbrains:markdown-jvm:0.7.3=classpath org.jetbrains:markdown:0.7.3=classpath -org.json:json:20240205=classpath org.jvnet.staxex:stax-ex:1.8.1=classpath org.ow2.asm:asm-analysis:9.7=classpath org.ow2.asm:asm-commons:9.7=classpath @@ -185,10 +186,11 @@ org.ow2.asm:asm-util:9.7=classpath org.ow2.asm:asm:9.7=classpath org.slf4j:slf4j-api:1.7.30=classpath org.tensorflow:tensorflow-lite-metadata:0.2.0=classpath -wtf.emulator:gradle-compat-6-1:0.16.2=classpath -wtf.emulator:gradle-compat-6-6:0.16.2=classpath -wtf.emulator:gradle-compat-7-6:0.16.2=classpath -wtf.emulator:gradle-compat-api:0.16.2=classpath -wtf.emulator:gradle-compat:0.16.2=classpath -wtf.emulator:gradle-plugin:0.16.2=classpath +wtf.emulator:gradle-compat-7-0:0.18.1=classpath +wtf.emulator:gradle-compat-7-4:0.18.1=classpath +wtf.emulator:gradle-compat-api:0.18.1=classpath +wtf.emulator:gradle-compat:0.18.1=classpath +wtf.emulator:gradle-plugin-api:0.18.1=classpath +wtf.emulator:gradle-plugin-core:0.18.1=classpath +wtf.emulator:gradle-plugin:0.18.1=classpath empty= diff --git a/gradle.properties b/gradle.properties index 4cbec3664..7b1d91423 100644 --- a/gradle.properties +++ b/gradle.properties @@ -154,7 +154,7 @@ ANDROID_NDK_VERSION=27.0.12077973 ANDROID_GRADLE_PLUGIN_VERSION=8.9.0 DETEKT_VERSION=1.23.8 DETEKT_COMPOSE_RULES_VERSION=0.4.22 -EMULATOR_WTF_GRADLE_PLUGIN_VERSION=0.16.2 +EMULATOR_WTF_GRADLE_PLUGIN_VERSION=0.18.1 FIREBASE_CRASHLYTICS_BUILD_TOOLS_VERSION=3.0.3 FLANK_VERSION=23.10.1 FULLADLE_VERSION=0.17.5 diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt index fdeda17a1..5b208edab 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt @@ -667,7 +667,7 @@ fun ScanCameraView( .build() val preview = androidx.camera.core.Preview.Builder().build().apply { - setSurfaceProvider(previewView.surfaceProvider) + surfaceProvider = previewView.surfaceProvider } runCatching { From 70bf9101c4408b03110b0840e87c8828577fb9b5 Mon Sep 17 00:00:00 2001 From: Honza Date: Wed, 12 Mar 2025 14:30:50 +0100 Subject: [PATCH 22/31] Screenshot testing fix --- .../zcash/ui/screenshot/ScreenshotTest.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt index fb8fb9e3a..df25c77c7 100644 --- a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt +++ b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt @@ -3,6 +3,7 @@ package co.electroniccoin.zcash.ui.screenshot import android.content.Context +import android.graphics.Bitmap import android.os.Build import android.os.LocaleList import androidx.activity.viewModels @@ -24,8 +25,8 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.core.graphics.writeToTestStorage import androidx.test.espresso.Espresso import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.captureToBitmap import androidx.test.espresso.matcher.ViewMatchers.isRoot -import androidx.test.espresso.screenshot.captureToBitmap import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.filters.LargeTest import androidx.test.filters.SdkSuppress @@ -87,8 +88,11 @@ class ScreenshotTest : UiTestPrerequisites() { screenshotName: String ) { onView(isRoot()) - .captureToBitmap() - .writeToTestStorage("$screenshotName - $tag") + .perform( + captureToBitmap { bitmap: Bitmap -> + bitmap.writeToTestStorage("$screenshotName - $tag") + } + ) } } From bbb82a7d99678b63e5e37c70e50e53f4de2ff21f Mon Sep 17 00:00:00 2001 From: Honza Date: Wed, 12 Mar 2025 16:59:32 +0100 Subject: [PATCH 23/31] Other dependencies update - Jgit 7.1.0.202411261347-r - Compose Compiler 1.5.15 - Splash 1.2.0-beta01 - UI Automator 2.4.0-alpha01 - Google Auth Java 1.33.1 - KotlinX Datetime 0.6.2 --- build-conventions-secant/gradle.lockfile | 32 ++++++++----------- buildSrc/gradle.lockfile | 25 +++++---------- buildscript-gradle.lockfile | 26 +++++++-------- configuration-api-lib/gradle.lockfile | 4 +-- crash-lib/gradle.lockfile | 4 +-- .../fixture/ReportableExceptionFixture.kt | 3 +- gradle.properties | 12 +++---- 7 files changed, 45 insertions(+), 61 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index deb394ebb..37574562a 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -49,26 +49,22 @@ com.google.android:annotations:4.1.1.4=runtimeClasspath com.google.api-client:google-api-client:2.2.0=compileClasspath,runtimeClasspath com.google.api.grpc:proto-google-common-protos:2.17.0=runtimeClasspath com.google.apis:google-api-services-androidpublisher:v3-rev20231030-2.0.0=compileClasspath,runtimeClasspath -com.google.auth:google-auth-library-credentials:1.18.0=compileClasspath,runtimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.18.0=compileClasspath,runtimeClasspath -com.google.auto.value:auto-value-annotations:1.10.1=compileClasspath,runtimeClasspath +com.google.auth:google-auth-library-credentials:1.33.1=compileClasspath,runtimeClasspath +com.google.auth:google-auth-library-oauth2-http:1.33.1=compileClasspath,runtimeClasspath +com.google.auto.value:auto-value-annotations:1.11.0=compileClasspath,runtimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath -com.google.code.gson:gson:2.10=compileClasspath -com.google.code.gson:gson:2.11.0=runtimeClasspath +com.google.code.gson:gson:2.12.1=compileClasspath,runtimeClasspath com.google.crypto.tink:tink:1.7.0=runtimeClasspath com.google.dagger:dagger:2.28.3=runtimeClasspath -com.google.errorprone:error_prone_annotations:2.16=compileClasspath -com.google.errorprone:error_prone_annotations:2.27.0=runtimeClasspath +com.google.errorprone:error_prone_annotations:2.36.0=compileClasspath,runtimeClasspath com.google.flatbuffers:flatbuffers-java:1.12.0=runtimeClasspath -com.google.guava:failureaccess:1.0.1=compileClasspath,runtimeClasspath -com.google.guava:guava:31.1-jre=compileClasspath -com.google.guava:guava:32.0.1-jre=runtimeClasspath +com.google.guava:failureaccess:1.0.2=compileClasspath,runtimeClasspath +com.google.guava:guava:33.4.0-android=compileClasspath,runtimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,runtimeClasspath com.google.http-client:google-http-client-apache-v2:1.42.3=compileClasspath,runtimeClasspath -com.google.http-client:google-http-client-gson:1.42.3=compileClasspath,runtimeClasspath -com.google.http-client:google-http-client:1.42.3=compileClasspath,runtimeClasspath -com.google.j2objc:j2objc-annotations:1.3=compileClasspath -com.google.j2objc:j2objc-annotations:2.8=runtimeClasspath +com.google.http-client:google-http-client-gson:1.46.2=compileClasspath,runtimeClasspath +com.google.http-client:google-http-client:1.46.2=compileClasspath,runtimeClasspath +com.google.j2objc:j2objc-annotations:3.0.0=compileClasspath,runtimeClasspath com.google.jimfs:jimfs:1.1=runtimeClasspath com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,runtimeClasspath com.google.protobuf:protobuf-java-util:3.22.3=runtimeClasspath @@ -86,9 +82,8 @@ commons-codec:commons-codec:1.15=compileClasspath,runtimeClasspath commons-io:commons-io:2.17.0=runtimeClasspath commons-logging:commons-logging:1.2=compileClasspath,runtimeClasspath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=compileClasspath,runtimeClasspath -io.grpc:grpc-api:1.57.2=runtimeClasspath -io.grpc:grpc-context:1.27.2=compileClasspath -io.grpc:grpc-context:1.57.2=runtimeClasspath +io.grpc:grpc-api:1.70.0=runtimeClasspath +io.grpc:grpc-context:1.70.0=compileClasspath,runtimeClasspath io.grpc:grpc-core:1.57.2=runtimeClasspath io.grpc:grpc-netty:1.57.2=runtimeClasspath io.grpc:grpc-protobuf-lite:1.57.2=runtimeClasspath @@ -125,8 +120,7 @@ org.bitbucket.b_c:jose4j:0.9.5=runtimeClasspath org.bouncycastle:bcpkix-jdk18on:1.79=runtimeClasspath org.bouncycastle:bcprov-jdk18on:1.79=runtimeClasspath org.bouncycastle:bcutil-jdk18on:1.79=runtimeClasspath -org.checkerframework:checker-qual:3.12.0=compileClasspath -org.checkerframework:checker-qual:3.33.0=runtimeClasspath +org.checkerframework:checker-qual:3.43.0=compileClasspath,runtimeClasspath org.codehaus.mojo:animal-sniffer-annotations:1.23=runtimeClasspath org.freemarker:freemarker:2.3.32=runtimeClasspath org.glassfish.jaxb:jaxb-runtime:2.3.2=runtimeClasspath diff --git a/buildSrc/gradle.lockfile b/buildSrc/gradle.lockfile index bea71974d..ddfa697d7 100644 --- a/buildSrc/gradle.lockfile +++ b/buildSrc/gradle.lockfile @@ -1,37 +1,28 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.googlecode.javaewah:JavaEWAH:1.1.13=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.eclipse.jgit:org.eclipse.jgit:6.4.0.202211300538-r=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest +com.googlecode.javaewah:JavaEWAH:1.2.3=buildScriptClasspath,compileClasspath +commons-codec:commons-codec:1.17.1=buildScriptClasspath,compileClasspath +org.eclipse.jgit:org.eclipse.jgit:7.1.0.202411261347-r=buildScriptClasspath,compileClasspath +org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath -org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-common:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath -org.jetbrains:annotations:13.0=compileClasspath,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:1.7.30=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -empty=annotationProcessor,apiDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions +org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain +org.slf4j:slf4j-api:1.7.36=buildScriptClasspath,compileClasspath +empty=annotationProcessor,kotlinScriptDefExtensions diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 072531aca..551feedee 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -53,25 +53,25 @@ com.google.android:annotations:4.1.1.4=classpath com.google.api-client:google-api-client:2.2.0=classpath com.google.api.grpc:proto-google-common-protos:2.17.0=classpath com.google.apis:google-api-services-androidpublisher:v3-rev20231030-2.0.0=classpath -com.google.auth:google-auth-library-credentials:1.18.0=classpath -com.google.auth:google-auth-library-oauth2-http:1.18.0=classpath -com.google.auto.value:auto-value-annotations:1.10.1=classpath +com.google.auth:google-auth-library-credentials:1.33.1=classpath +com.google.auth:google-auth-library-oauth2-http:1.33.1=classpath +com.google.auto.value:auto-value-annotations:1.11.0=classpath com.google.code.findbugs:jsr305:3.0.2=classpath -com.google.code.gson:gson:2.11.0=classpath +com.google.code.gson:gson:2.12.1=classpath com.google.crypto.tink:tink:1.7.0=classpath com.google.dagger:dagger:2.28.3=classpath -com.google.errorprone:error_prone_annotations:2.27.0=classpath +com.google.errorprone:error_prone_annotations:2.36.0=classpath com.google.firebase:firebase-crashlytics-buildtools:3.0.3=classpath com.google.firebase:firebase-crashlytics-gradle:3.0.3=classpath com.google.flatbuffers:flatbuffers-java:1.12.0=classpath com.google.gms:google-services:4.4.2=classpath -com.google.guava:failureaccess:1.0.1=classpath -com.google.guava:guava:32.0.1-jre=classpath +com.google.guava:failureaccess:1.0.2=classpath +com.google.guava:guava:33.4.0-android=classpath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath com.google.http-client:google-http-client-apache-v2:1.42.3=classpath -com.google.http-client:google-http-client-gson:1.42.3=classpath -com.google.http-client:google-http-client:1.42.3=classpath -com.google.j2objc:j2objc-annotations:2.8=classpath +com.google.http-client:google-http-client-gson:1.46.2=classpath +com.google.http-client:google-http-client:1.46.2=classpath +com.google.j2objc:j2objc-annotations:3.0.0=classpath com.google.jimfs:jimfs:1.1=classpath com.google.oauth-client:google-oauth-client:1.34.1=classpath com.google.protobuf:protobuf-java-util:3.22.3=classpath @@ -100,8 +100,8 @@ commons-logging:commons-logging:1.2=classpath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=classpath io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.19.0=classpathCopy io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.20.0=classpathCopy2 -io.grpc:grpc-api:1.57.2=classpath -io.grpc:grpc-context:1.57.2=classpath +io.grpc:grpc-api:1.70.0=classpath +io.grpc:grpc-context:1.70.0=classpath io.grpc:grpc-core:1.57.2=classpath io.grpc:grpc-netty:1.57.2=classpath io.grpc:grpc-protobuf-lite:1.57.2=classpath @@ -138,7 +138,7 @@ org.bitbucket.b_c:jose4j:0.9.5=classpath org.bouncycastle:bcpkix-jdk18on:1.79=classpath org.bouncycastle:bcprov-jdk18on:1.79=classpath org.bouncycastle:bcutil-jdk18on:1.79=classpath -org.checkerframework:checker-qual:3.33.0=classpath +org.checkerframework:checker-qual:3.43.0=classpath org.codehaus.mojo:animal-sniffer-annotations:1.23=classpath org.freemarker:freemarker:2.3.32=classpath org.glassfish.jaxb:jaxb-runtime:2.3.2=classpath diff --git a/configuration-api-lib/gradle.lockfile b/configuration-api-lib/gradle.lockfile index e09ff572e..dd3fe0117 100644 --- a/configuration-api-lib/gradle.lockfile +++ b/configuration-api-lib/gradle.lockfile @@ -47,9 +47,9 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4=allSourceSetsRuntimeDependen org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1=metadataCommonMainCompileClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.10.1=jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1=allTestSourceSetsCompileDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.5.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.4.0=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=koverJvmAgent,koverJvmReporter diff --git a/crash-lib/gradle.lockfile b/crash-lib/gradle.lockfile index 14b32dcab..409a39c5a 100644 --- a/crash-lib/gradle.lockfile +++ b/crash-lib/gradle.lockfile @@ -68,11 +68,11 @@ org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1=commonTestImplementationCopy org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2=commonTestImplementationCopy2 org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.2=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.3=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.5.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.3.2=commonMainApiCopy,jvmTestCompileClasspathCopy,jvmTestRuntimeClasspathCopy org.jetbrains.kotlinx:kotlinx-datetime:0.3.3=commonMainApiCopy2,jvmTestCompileClasspathCopy2,jvmTestRuntimeClasspathCopy2 org.jetbrains.kotlinx:kotlinx-datetime:0.4.0=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.5.0=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2=allSourceSetsRuntimeDependenciesMetadata,metadataCommonMainCompileClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCompileClasspath org.jetbrains.kotlinx:kover-jvm-agent:0.9.1=koverJvmAgent,koverJvmReporter diff --git a/crash-lib/src/commonMain/kotlin/co/electriccoin/zcash/crash/fixture/ReportableExceptionFixture.kt b/crash-lib/src/commonMain/kotlin/co/electriccoin/zcash/crash/fixture/ReportableExceptionFixture.kt index 666fe56c8..1884efc4e 100644 --- a/crash-lib/src/commonMain/kotlin/co/electriccoin/zcash/crash/fixture/ReportableExceptionFixture.kt +++ b/crash-lib/src/commonMain/kotlin/co/electriccoin/zcash/crash/fixture/ReportableExceptionFixture.kt @@ -2,7 +2,6 @@ package co.electriccoin.zcash.crash.fixture import co.electriccoin.zcash.crash.ReportableException import kotlinx.datetime.Instant -import kotlinx.datetime.toInstant object ReportableExceptionFixture { private val EXCEPTION = RuntimeException("I am exceptional") @@ -12,7 +11,7 @@ object ReportableExceptionFixture { const val IS_UNCAUGHT = true // No milliseconds, because those can cause some tests to fail due to rounding - val TIMESTAMP = "2022-04-15T11:28:54Z".toInstant() + val TIMESTAMP = Instant.parse("2022-04-15T11:28:54Z") fun new( className: String = CLASS, diff --git a/gradle.properties b/gradle.properties index 7b1d91423..da2663780 100644 --- a/gradle.properties +++ b/gradle.properties @@ -160,7 +160,7 @@ FLANK_VERSION=23.10.1 FULLADLE_VERSION=0.17.5 GOOGLE_PLAY_SERVICES_GRADLE_PLUGIN_VERSION=4.4.2 GRADLE_VERSIONS_PLUGIN_VERSION=0.52.0 -JGIT_VERSION=6.4.0.202211300538-r +JGIT_VERSION=7.1.0.202411261347-r KTLINT_VERSION=1.5.0 KOIN_VERSION=4.0.2 @@ -169,7 +169,7 @@ ANDROIDX_ACTIVITY_VERSION=1.10.1 ANDROIDX_ANNOTATION_VERSION=1.9.1 ANDROIDX_BIOMETRIC_VERSION=1.4.0-alpha02 ANDROIDX_CAMERA_VERSION=1.4.1 -ANDROIDX_COMPOSE_COMPILER_VERSION=1.5.11 +ANDROIDX_COMPOSE_COMPILER_VERSION=1.5.15 ANDROIDX_COMPOSE_MATERIAL3_VERSION=1.3.1 ANDROIDX_COMPOSE_MATERIAL_ICONS_VERSION=1.7.8 ANDROIDX_COMPOSE_VERSION=1.7.8 @@ -181,7 +181,7 @@ ANDROIDX_FRAGMENT_VERSION=1.8.6 ANDROIDX_NAVIGATION_COMPOSE_VERSION=2.8.8 ANDROIDX_PROFILE_INSTALLER_VERSION=1.4.1 ANDROIDX_SECURITY_CRYPTO_VERSION=1.1.0-alpha06 -ANDROIDX_SPLASH_SCREEN_VERSION=1.0.1 +ANDROIDX_SPLASH_SCREEN_VERSION=1.2.0-beta01 ANDROIDX_TEST_JUNIT_VERSION=1.2.1 ANDROIDX_TEST_ORCHESTRATOR_VERSION=1.5.1 ANDROIDX_TEST_CORE_VERSION=1.6.1 @@ -189,17 +189,17 @@ ANDROIDX_TEST_MACROBENCHMARK_VERSION=1.3.3 ANDROIDX_TEST_RUNNER_VERSION=1.6.2 ANDROIDX_STARTUP_VERSION=1.2.0 ANDROIDX_TEST_SERVICE_VERSION=1.5.0 -ANDROIDX_UI_AUTOMATOR_VERSION=2.3.0 +ANDROIDX_UI_AUTOMATOR_VERSION=2.4.0-alpha01 ANDROIDX_WORK_MANAGER_VERSION=2.10.0 ANDROIDX_BROWSER_VERSION=1.8.0 CORE_LIBRARY_DESUGARING_VERSION=2.1.5 FIREBASE_BOM_VERSION_MATCHER=33.10.0 -GOOGLE_AUTH_LIB_JAVA_VERSION=1.18.0 +GOOGLE_AUTH_LIB_JAVA_VERSION=1.33.1 JACOCO_VERSION=0.8.12 KEYSTONE_VERSION=0.7.10 KOTLIN_VERSION=2.1.10 KOTLINX_COROUTINES_VERSION=1.10.1 -KOTLINX_DATETIME_VERSION=0.5.0 +KOTLINX_DATETIME_VERSION=0.6.2 KOTLINX_IMMUTABLE_COLLECTIONS_VERSION=0.3.8 KOTLINX_SERIALIZABLE_JSON_VERSION=1.8.0 KOVER_VERSION=0.9.1 From f73c15a7df0dd369484c2dfa8793fff064108516 Mon Sep 17 00:00:00 2001 From: Honza Date: Wed, 12 Mar 2025 17:05:10 +0100 Subject: [PATCH 24/31] Remove in-app update left code fragments --- .../kotlin/publish/secant.publish-conventions.gradle.kts | 4 ---- gradle.properties | 8 -------- 2 files changed, 12 deletions(-) diff --git a/build-conventions-secant/src/main/kotlin/publish/secant.publish-conventions.gradle.kts b/build-conventions-secant/src/main/kotlin/publish/secant.publish-conventions.gradle.kts index 7261fdc61..01cc7edc3 100644 --- a/build-conventions-secant/src/main/kotlin/publish/secant.publish-conventions.gradle.kts +++ b/build-conventions-secant/src/main/kotlin/publish/secant.publish-conventions.gradle.kts @@ -237,9 +237,6 @@ abstract class PublishToGooglePlay @Inject constructor( val gradleVersionName = project.property("ZCASH_VERSION_NAME").toString() val versionName = "$gradleVersionName (${bundle.versionCode.toLong()}): Automated Internal Testing Release" - // In-app update priority of the release. Can take values in the range [0, 5], with 5 the highest priority. - val inAppUpdatePriority = project.property("ZCASH_IN_APP_UPDATE_PRIORITY").toString().toInt() - val releaseNotes: List = getReleaseNotesFor( gradleVersionName = gradleVersionName, languageTags = listOf( @@ -259,7 +256,6 @@ abstract class PublishToGooglePlay @Inject constructor( track, Track().setReleases( listOf(TrackRelease() - .setInAppUpdatePriority(inAppUpdatePriority) .setReleaseNotes(releaseNotes) .setName(versionName) .setVersionCodes(bundleVersionCodes) diff --git a/gradle.properties b/gradle.properties index da2663780..ccc67ba5c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -71,13 +71,6 @@ ZCASH_RELEASE_PACKAGE_NAME=co.electriccoin.zcash ZCASH_DEBUG_APP_NAME_SUFFIX="Debug" ZCASH_FOSS_APP_NAME_SUFFIX="Foss" -# In-app update priority of the release. It can take values in the range [0, 5], with 5 being the highest priority. -# Defaults to 0. We treat all the values the same, except 5, which is evaluated as [Priority.HIGH], -# the update is then critical, and thus presented to users immediately once the update is available for them regardless -# of the [AppUpdateChecker.stalenessDays]. -# For more details about in-app update mechanisms, see https://developer.android.com/guide/playcore/in-app-updates -ZCASH_IN_APP_UPDATE_PRIORITY=0 - # Recommended protection of screens with sensitive data. # It is enabled by default to protect the developers from revealing their wallet secrets by mistake. IS_SECURE_SCREEN_PROTECTION_ACTIVE=true @@ -206,7 +199,6 @@ KOVER_VERSION=0.9.1 LOTTIE_VERSION=6.6.3 MARKDOWN_VERSION=0.7.3 MLKIT_SCANNING_VERSION=17.3.0 -PLAY_APP_UPDATE_KTX_VERSION=2.1.0 PLAY_PUBLISHER_API_VERSION=v3-rev20231030-2.0.0 SHIMMER_VERSION=1.3.2 TINK_VERSION=1.16.0 From a4810b96840e655a370963863290b7d9c74a7040 Mon Sep 17 00:00:00 2001 From: Honza Date: Wed, 12 Mar 2025 17:14:48 +0100 Subject: [PATCH 25/31] Google Play Publisher v3-rev20250227-2.0.0 --- build-conventions-secant/gradle.lockfile | 10 +++++----- buildscript-gradle.lockfile | 10 +++++----- gradle.properties | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index 37574562a..bce313a3e 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -46,9 +46,9 @@ com.android.tools:sdklib:31.9.0=runtimeClasspath com.android:signflinger:8.9.0=runtimeClasspath com.android:zipflinger:8.9.0=compileClasspath,runtimeClasspath com.google.android:annotations:4.1.1.4=runtimeClasspath -com.google.api-client:google-api-client:2.2.0=compileClasspath,runtimeClasspath +com.google.api-client:google-api-client:2.7.2=compileClasspath,runtimeClasspath com.google.api.grpc:proto-google-common-protos:2.17.0=runtimeClasspath -com.google.apis:google-api-services-androidpublisher:v3-rev20231030-2.0.0=compileClasspath,runtimeClasspath +com.google.apis:google-api-services-androidpublisher:v3-rev20250227-2.0.0=compileClasspath,runtimeClasspath com.google.auth:google-auth-library-credentials:1.33.1=compileClasspath,runtimeClasspath com.google.auth:google-auth-library-oauth2-http:1.33.1=compileClasspath,runtimeClasspath com.google.auto.value:auto-value-annotations:1.11.0=compileClasspath,runtimeClasspath @@ -61,12 +61,12 @@ com.google.flatbuffers:flatbuffers-java:1.12.0=runtimeClasspath com.google.guava:failureaccess:1.0.2=compileClasspath,runtimeClasspath com.google.guava:guava:33.4.0-android=compileClasspath,runtimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,runtimeClasspath -com.google.http-client:google-http-client-apache-v2:1.42.3=compileClasspath,runtimeClasspath +com.google.http-client:google-http-client-apache-v2:1.45.2=compileClasspath,runtimeClasspath com.google.http-client:google-http-client-gson:1.46.2=compileClasspath,runtimeClasspath com.google.http-client:google-http-client:1.46.2=compileClasspath,runtimeClasspath com.google.j2objc:j2objc-annotations:3.0.0=compileClasspath,runtimeClasspath com.google.jimfs:jimfs:1.1=runtimeClasspath -com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,runtimeClasspath +com.google.oauth-client:google-oauth-client:1.36.0=compileClasspath,runtimeClasspath com.google.protobuf:protobuf-java-util:3.22.3=runtimeClasspath com.google.protobuf:protobuf-java:3.24.4=runtimeClasspath com.google.testing.platform:core-proto:0.0.9-alpha03=runtimeClasspath @@ -78,7 +78,7 @@ com.sun.activation:javax.activation:1.2.0=runtimeClasspath com.sun.istack:istack-commons-runtime:3.0.8=runtimeClasspath com.sun.xml.fastinfoset:FastInfoset:1.2.16=runtimeClasspath com.vdurmont:semver4j:3.1.0=runtimeClasspath -commons-codec:commons-codec:1.15=compileClasspath,runtimeClasspath +commons-codec:commons-codec:1.17.1=compileClasspath,runtimeClasspath commons-io:commons-io:2.17.0=runtimeClasspath commons-logging:commons-logging:1.2=compileClasspath,runtimeClasspath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=compileClasspath,runtimeClasspath diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 551feedee..7f8b93a50 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -50,9 +50,9 @@ com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin:0.52.0 com.github.ben-manes:gradle-versions-plugin:0.52.0=classpath com.google.android.gms:strict-version-matcher-plugin:1.2.4=classpath com.google.android:annotations:4.1.1.4=classpath -com.google.api-client:google-api-client:2.2.0=classpath +com.google.api-client:google-api-client:2.7.2=classpath com.google.api.grpc:proto-google-common-protos:2.17.0=classpath -com.google.apis:google-api-services-androidpublisher:v3-rev20231030-2.0.0=classpath +com.google.apis:google-api-services-androidpublisher:v3-rev20250227-2.0.0=classpath com.google.auth:google-auth-library-credentials:1.33.1=classpath com.google.auth:google-auth-library-oauth2-http:1.33.1=classpath com.google.auto.value:auto-value-annotations:1.11.0=classpath @@ -68,12 +68,12 @@ com.google.gms:google-services:4.4.2=classpath com.google.guava:failureaccess:1.0.2=classpath com.google.guava:guava:33.4.0-android=classpath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath -com.google.http-client:google-http-client-apache-v2:1.42.3=classpath +com.google.http-client:google-http-client-apache-v2:1.45.2=classpath com.google.http-client:google-http-client-gson:1.46.2=classpath com.google.http-client:google-http-client:1.46.2=classpath com.google.j2objc:j2objc-annotations:3.0.0=classpath com.google.jimfs:jimfs:1.1=classpath -com.google.oauth-client:google-oauth-client:1.34.1=classpath +com.google.oauth-client:google-oauth-client:1.36.0=classpath com.google.protobuf:protobuf-java-util:3.22.3=classpath com.google.protobuf:protobuf-java:3.24.4=classpath com.google.testing.platform:core-proto:0.0.9-alpha03=classpath @@ -94,7 +94,7 @@ com.sun.activation:javax.activation:1.2.0=classpath com.sun.istack:istack-commons-runtime:3.0.8=classpath com.sun.xml.fastinfoset:FastInfoset:1.2.16=classpath com.vdurmont:semver4j:3.1.0=classpath -commons-codec:commons-codec:1.15=classpath +commons-codec:commons-codec:1.17.1=classpath commons-io:commons-io:2.17.0=classpath commons-logging:commons-logging:1.2=classpath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=classpath diff --git a/gradle.properties b/gradle.properties index ccc67ba5c..386744175 100644 --- a/gradle.properties +++ b/gradle.properties @@ -199,7 +199,7 @@ KOVER_VERSION=0.9.1 LOTTIE_VERSION=6.6.3 MARKDOWN_VERSION=0.7.3 MLKIT_SCANNING_VERSION=17.3.0 -PLAY_PUBLISHER_API_VERSION=v3-rev20231030-2.0.0 +PLAY_PUBLISHER_API_VERSION=v3-rev20250227-2.0.0 SHIMMER_VERSION=1.3.2 TINK_VERSION=1.16.0 ZCASH_ANDROID_WALLET_PLUGINS_VERSION=1.0.0 From bf09c773cadf601b95066e3f57a23ad9ccb32906 Mon Sep 17 00:00:00 2001 From: Honza Date: Wed, 12 Mar 2025 17:19:52 +0100 Subject: [PATCH 26/31] Changelog update --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cad141227..c6e8a5861 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this application adheres to [Semantic Versioning](https://semver.org/spec/v2 ### Added - Support for `zcashtestnetFossRelease` has been added to the app resources package +### Changed +- All internal dependencies have been updated + ### Fixed - We fixed the `zcashtestnetStoreDebug` app build variant file provider, so the export private data and export tax file features work for this build variant as expected From 2f348d3be17ac90ee70280a9ae7aeccc6309c94e Mon Sep 17 00:00:00 2001 From: Honza Date: Thu, 13 Mar 2025 09:39:32 +0100 Subject: [PATCH 27/31] Fix `Instant` in configuration tests --- .../configuration/api/MergingConfigurationProviderTest.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt index 0f4c0700f..460a3321c 100644 --- a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt +++ b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt @@ -10,7 +10,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.runTest -import kotlinx.datetime.toInstant +import kotlinx.datetime.Instant import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue @@ -81,8 +81,8 @@ class MergingConfigurationProviderTest { @Test fun getUpdatedAt_newest() = runTest { - val older = "2023-01-15T08:38:45.415Z".toInstant() - val newer = "2023-01-17T08:38:45.415Z".toInstant() + val older = Instant.parse("2023-01-15T08:38:45.415Z") + val newer = Instant.parse("2023-01-17T08:38:45.415Z") val configurationProvider = MergingConfigurationProvider( From 01ae3a509b96a8b7056118628c7572f4e2559dcb Mon Sep 17 00:00:00 2001 From: Honza Date: Thu, 13 Mar 2025 10:14:09 +0100 Subject: [PATCH 28/31] Fix Constraint layout in Scan views --- .../java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt | 2 +- .../zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt index 5b208edab..7938b5478 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scan/view/ScanView.kt @@ -507,7 +507,7 @@ private fun ScanMainContent( end.linkTo(parent.end, 78.dp) bottom.linkTo(bottomItems.top) this.height = Dimension.ratio("1:1.08") // height is 8% larger than width - width = Dimension.matchParent + width = Dimension.fillToConstraints }.onSizeChanged { scanFrameLayoutSize = it }, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt index 44fa9c507..f0a18892a 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/scankeystone/view/ScanKeystoneView.kt @@ -526,7 +526,7 @@ private fun ScanMainContent( end.linkTo(parent.end, 78.dp) bottom.linkTo(bottomItems.top) this.height = Dimension.ratio("1:1.08") // height is 8% larger than width - width = Dimension.matchParent + width = Dimension.fillToConstraints }.onSizeChanged { scanFrameLayoutSize = it }, From 3376a92a64c0eb62303652e19428bcf29eb6b1fb Mon Sep 17 00:00:00 2001 From: Honza Date: Thu, 13 Mar 2025 10:14:37 +0100 Subject: [PATCH 29/31] Fix MockSynchronizer implementation --- .../co/electriccoin/zcash/ui/fixture/MockSynchronizer.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/fixture/MockSynchronizer.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/fixture/MockSynchronizer.kt index 959700072..c5997309a 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/fixture/MockSynchronizer.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/fixture/MockSynchronizer.kt @@ -244,6 +244,14 @@ internal class MockSynchronizer : CloseableSynchronizer { error("Intentionally not implemented in ${MockSynchronizer::class.simpleName} implementation.") } + override suspend fun pcztRequiresSaplingProofs(pczt: Pczt): Boolean { + error("Intentionally not implemented in ${MockSynchronizer::class.simpleName} implementation.") + } + + override suspend fun redactPcztForSigner(pczt: Pczt): Pczt { + error("Intentionally not implemented in ${MockSynchronizer::class.simpleName} implementation.") + } + companion object { fun new() = MockSynchronizer() } From 6d96db3400a12e888a118735278b6ece70a35744 Mon Sep 17 00:00:00 2001 From: Honza Date: Thu, 13 Mar 2025 11:00:55 +0100 Subject: [PATCH 30/31] Fix `receiveZecScreenshots` test --- .../java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt index df25c77c7..b13e7fc42 100644 --- a/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt +++ b/ui-screenshot-test/src/main/java/co/electroniccoin/zcash/ui/screenshot/ScreenshotTest.kt @@ -110,6 +110,7 @@ class ScreenshotTest : UiTestPrerequisites() { onNodeWithTag(destinationTag).also { it.assertExists() it.performClick() + waitForIdle() } } From 6b481b0967e3b11b5acfc24908a5734e29558ba6 Mon Sep 17 00:00:00 2001 From: Honza Date: Thu, 13 Mar 2025 14:08:17 +0100 Subject: [PATCH 31/31] Downgrade Google Auth Java to 1.24.1 To avoid: Unable to load class 'io.grpc.InternalGlobalInterceptors' bug in later versions --- build-conventions-secant/gradle.lockfile | 4 ++-- buildscript-gradle.lockfile | 4 ++-- gradle.properties | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/build-conventions-secant/gradle.lockfile b/build-conventions-secant/gradle.lockfile index bce313a3e..f257c2748 100644 --- a/build-conventions-secant/gradle.lockfile +++ b/build-conventions-secant/gradle.lockfile @@ -49,8 +49,8 @@ com.google.android:annotations:4.1.1.4=runtimeClasspath com.google.api-client:google-api-client:2.7.2=compileClasspath,runtimeClasspath com.google.api.grpc:proto-google-common-protos:2.17.0=runtimeClasspath com.google.apis:google-api-services-androidpublisher:v3-rev20250227-2.0.0=compileClasspath,runtimeClasspath -com.google.auth:google-auth-library-credentials:1.33.1=compileClasspath,runtimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.33.1=compileClasspath,runtimeClasspath +com.google.auth:google-auth-library-credentials:1.24.1=compileClasspath,runtimeClasspath +com.google.auth:google-auth-library-oauth2-http:1.24.1=compileClasspath,runtimeClasspath com.google.auto.value:auto-value-annotations:1.11.0=compileClasspath,runtimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath com.google.code.gson:gson:2.12.1=compileClasspath,runtimeClasspath diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 7f8b93a50..4d31e4900 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -53,8 +53,8 @@ com.google.android:annotations:4.1.1.4=classpath com.google.api-client:google-api-client:2.7.2=classpath com.google.api.grpc:proto-google-common-protos:2.17.0=classpath com.google.apis:google-api-services-androidpublisher:v3-rev20250227-2.0.0=classpath -com.google.auth:google-auth-library-credentials:1.33.1=classpath -com.google.auth:google-auth-library-oauth2-http:1.33.1=classpath +com.google.auth:google-auth-library-credentials:1.24.1=classpath +com.google.auth:google-auth-library-oauth2-http:1.24.1=classpath com.google.auto.value:auto-value-annotations:1.11.0=classpath com.google.code.findbugs:jsr305:3.0.2=classpath com.google.code.gson:gson:2.12.1=classpath diff --git a/gradle.properties b/gradle.properties index 386744175..7e382981d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -187,7 +187,8 @@ ANDROIDX_WORK_MANAGER_VERSION=2.10.0 ANDROIDX_BROWSER_VERSION=1.8.0 CORE_LIBRARY_DESUGARING_VERSION=2.1.5 FIREBASE_BOM_VERSION_MATCHER=33.10.0 -GOOGLE_AUTH_LIB_JAVA_VERSION=1.33.1 +## Warn: The latest version 1.33.1 suffers with: Unable to load class 'io.grpc.InternalGlobalInterceptors' +GOOGLE_AUTH_LIB_JAVA_VERSION=1.24.1 JACOCO_VERSION=0.8.12 KEYSTONE_VERSION=0.7.10 KOTLIN_VERSION=2.1.10