From f06ff11ce6d5097ee3d50269aa54ce474bdc1a42 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Fri, 3 Oct 2025 10:37:20 -0300 Subject: [PATCH] Use quartz from maven --- app/build.gradle | 2 +- .../nostrsigner/models/AmberBunkerRequest.kt | 6 +++--- .../com/greenart7c3/nostrsigner/models/Permission.kt | 2 +- .../nostrsigner/okhttp/EncryptedBlobInterceptor.kt | 4 ++-- .../nostrsigner/okhttp/EncryptionKeyCache.kt | 2 +- .../greenart7c3/nostrsigner/okhttp/OkHttpWebSocket.kt | 2 +- .../nostrsigner/service/BunkerRequestUtils.kt | 10 ++++++---- .../nostrsigner/service/EventNotificationConsumer.kt | 6 +++--- .../nostrsigner/service/model/AmberEvent.kt | 4 ++-- gradle/libs.versions.toml | 8 ++++---- 10 files changed, 24 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index cf4d2174..354d2ac7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -206,7 +206,6 @@ dependencies { implementation libs.adaptive.android testImplementation libs.junit - testImplementation libs.mockk androidTestImplementation libs.ext.junit androidTestImplementation libs.espresso.core androidTestImplementation libs.ui.test.junit4 @@ -254,4 +253,5 @@ dependencies { implementation libs.security.crypto implementation libs.lifecycle.process + implementation libs.kotlinx.collections.immutable } diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/models/AmberBunkerRequest.kt b/app/src/main/java/com/greenart7c3/nostrsigner/models/AmberBunkerRequest.kt index fd8faca7..7e07a7d0 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/models/AmberBunkerRequest.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/models/AmberBunkerRequest.kt @@ -17,7 +17,7 @@ import com.fasterxml.jackson.module.kotlin.readValue import com.greenart7c3.nostrsigner.Amber import com.greenart7c3.nostrsigner.ui.RememberType import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.jackson.JsonMapper +import com.vitorpamplona.quartz.nip01Core.jackson.JacksonMapper import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequest @@ -58,7 +58,7 @@ data class AmberBunkerRequest( fun fromJson(jsonObject: JsonNode): AmberBunkerRequest { return AmberBunkerRequest( - request = JsonMapper.mapper.readValue(jsonObject.get("request").asText().intern()), + request = JacksonMapper.mapper.readValue(jsonObject.get("request").asText().intern()), localKey = jsonObject.get("localKey")?.asText()?.intern() ?: "", relays = jsonObject.get("relays")?.asIterable()?.toList()?.mapNotNull { RelayUrlNormalizer.normalizeOrNull(it.asText()) @@ -69,7 +69,7 @@ data class AmberBunkerRequest( name = jsonObject.get("name")?.asText()?.intern() ?: "", signedEvent = jsonObject.get("signedEvent")?.asText()?.intern()?.let { try { - JsonMapper.fromJson(it) + JacksonMapper.fromJson(it) } catch (_: Exception) { null } diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/models/Permission.kt b/app/src/main/java/com/greenart7c3/nostrsigner/models/Permission.kt index 47edc5c9..5ba8a95a 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/models/Permission.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/models/Permission.kt @@ -14,7 +14,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.databind.ser.std.StdSerializer import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.greenart7c3.nostrsigner.R -import com.vitorpamplona.quartz.nip01Core.jackson.JsonMapper.Companion.defaultPrettyPrinter +import com.vitorpamplona.quartz.nip01Core.jackson.JacksonMapper.Companion.defaultPrettyPrinter data class Permission( val type: String, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptedBlobInterceptor.kt b/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptedBlobInterceptor.kt index a768aad2..9653ff48 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptedBlobInterceptor.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptedBlobInterceptor.kt @@ -21,8 +21,8 @@ package com.greenart7c3.nostrsigner.okhttp import android.util.Log -import com.vitorpamplona.quartz.nip17Dm.files.encryption.AESGCM -import com.vitorpamplona.quartz.nip17Dm.files.encryption.NostrCipher +import com.vitorpamplona.quartz.utils.ciphers.AESGCM +import com.vitorpamplona.quartz.utils.ciphers.NostrCipher import okhttp3.Interceptor import okhttp3.Response import okhttp3.ResponseBody.Companion.toResponseBody diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptionKeyCache.kt b/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptionKeyCache.kt index bc576c52..c9b6f152 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptionKeyCache.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/EncryptionKeyCache.kt @@ -21,7 +21,7 @@ package com.greenart7c3.nostrsigner.okhttp import android.util.LruCache -import com.vitorpamplona.quartz.nip17Dm.files.encryption.NostrCipher +import com.vitorpamplona.quartz.utils.ciphers.NostrCipher /** * Neigther ExoPlayer, nor Coil support passing key and nonce to the Interceptor via diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/OkHttpWebSocket.kt b/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/OkHttpWebSocket.kt index 15b38a5b..9c0bb955 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/OkHttpWebSocket.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/okhttp/OkHttpWebSocket.kt @@ -71,7 +71,7 @@ class OkHttpWebSocket( webSocket: okhttp3.WebSocket, response: Response, ) = out.onOpen( - response.receivedResponseAtMillis - response.sentRequestAtMillis, + (response.receivedResponseAtMillis - response.sentRequestAtMillis).toInt(), response.headers["Sec-WebSocket-Extensions"]?.contains("permessage-deflate") ?: false, ) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt index 2024bf16..361b8e88 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt @@ -18,7 +18,7 @@ import com.greenart7c3.nostrsigner.relays.AmberListenerSingleton import com.greenart7c3.nostrsigner.service.model.AmberEvent import com.greenart7c3.nostrsigner.ui.RememberType import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.jackson.JsonMapper +import com.vitorpamplona.quartz.nip01Core.jackson.JacksonMapper import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.sendAndWaitForResponse import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequest @@ -94,7 +94,7 @@ object BunkerRequestUtils { id = 0, url = relay.url, type = "bunker response", - message = JsonMapper.mapper.writeValueAsString(bunkerResponse), + message = JacksonMapper.mapper.writeValueAsString(bunkerResponse), time = System.currentTimeMillis(), ), ) @@ -102,14 +102,16 @@ object BunkerRequestUtils { } val encryptedContent = try { + val plainText = JacksonMapper.mapper.writeValueAsString(bunkerResponse) + if (bunkerRequest.encryptionType == EncryptionType.NIP44) { account.signer.signerSync.nip44Encrypt( - JsonMapper.mapper.writeValueAsString(bunkerResponse), + plainText, bunkerRequest.localKey, ) } else { account.signer.signerSync.nip04Encrypt( - JsonMapper.mapper.writeValueAsString(bunkerResponse), + plainText, bunkerRequest.localKey, ) } diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/EventNotificationConsumer.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/EventNotificationConsumer.kt index 80140966..2622c284 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/EventNotificationConsumer.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/EventNotificationConsumer.kt @@ -43,10 +43,10 @@ import com.greenart7c3.nostrsigner.models.SignerType import com.greenart7c3.nostrsigner.service.NotificationUtils.sendNotification import com.greenart7c3.nostrsigner.service.model.AmberEvent import com.vitorpamplona.quartz.nip01Core.core.Event -import com.vitorpamplona.quartz.nip01Core.jackson.JsonMapper +import com.vitorpamplona.quartz.nip01Core.crypto.verify +import com.vitorpamplona.quartz.nip01Core.jackson.JacksonMapper import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers -import com.vitorpamplona.quartz.nip01Core.verify import com.vitorpamplona.quartz.nip04Dm.crypto.EncryptedInfo import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequest import com.vitorpamplona.quartz.nip46RemoteSigner.BunkerRequestConnect @@ -164,7 +164,7 @@ class EventNotificationConsumer(private val applicationContext: Context) { ), ) - val bunkerRequest = JsonMapper.mapper.readValue(request, BunkerRequest::class.java) + val bunkerRequest = JacksonMapper.mapper.readValue(request, BunkerRequest::class.java) val signedEvent = if (bunkerRequest is BunkerRequestSign) { acc.signer.signerSync.sign(bunkerRequest.event) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/model/AmberEvent.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/model/AmberEvent.kt index 375539fa..af1c6ac0 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/model/AmberEvent.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/model/AmberEvent.kt @@ -15,7 +15,7 @@ import com.fasterxml.jackson.databind.ser.std.StdSerializer import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.jackson.JsonMapper +import com.vitorpamplona.quartz.nip01Core.jackson.JacksonMapper import com.vitorpamplona.quartz.nip01Core.jackson.toTypedArray import com.vitorpamplona.quartz.utils.TimeUtils @@ -78,7 +78,7 @@ open class AmberEvent( jacksonObjectMapper() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) .enable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature()) - .setDefaultPrettyPrinter(JsonMapper.defaultPrettyPrinter) + .setDefaultPrettyPrinter(JacksonMapper.defaultPrettyPrinter) .registerModule( SimpleModule() .addSerializer(AmberEvent::class.java, EventSerializer()) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cfd5a34f..72a7f31d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,9 +11,8 @@ junit = "4.13.2" junitVersion = "1.3.0" lifecycle_version = "2.9.4" material3 = "1.4.0" -mockk = "1.14.5" nav_version = "2.9.5" -quartz = "v1.00.5" +quartz = "1.03.0" compose_ui = "1.9.2" richtextUi = "e1151c8" roomKtx = "2.8.1" @@ -30,6 +29,7 @@ storage = "2.2.0" jna = "5.18.0" adaptiveAndroid = "1.1.0" materialIconsExtended = "1.7.8" +collections = "0.4.0" [libraries] datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastorePreferences" } @@ -49,9 +49,9 @@ lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle_version" } material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "materialIconsExtended" } material3 = { module = "androidx.compose.material3:material3", version.ref = "material3" } -mockk = { module = "io.mockk:mockk", version.ref = "mockk" } navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "nav_version" } -quartz = { module = "com.github.vitorpamplona.amethyst:quartz", version.ref = "quartz" } +quartz = { module = "com.vitorpamplona.quartz:quartz-android", version.ref = "quartz" } +kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "collections" } richtext-commonmark = { module = "com.github.vitorpamplona.compose-richtext:richtext-commonmark", version.ref = "richtextUi" } richtext-ui = { module = "com.github.vitorpamplona.compose-richtext:richtext-ui", version.ref = "richtextUi" } richtext-ui-material3 = { module = "com.github.vitorpamplona.compose-richtext:richtext-ui-material3", version.ref = "richtextUi" }