From dcd88245d9fe2c2dda13e1b75f9bec2f3194b466 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Wed, 13 Nov 2024 15:47:11 -0300 Subject: [PATCH] Add support for secret when using nostrconnect --- .../com/greenart7c3/nostrsigner/models/BunkerRequest.kt | 3 +++ .../nostrsigner/service/EventNotificationConsumer.kt | 7 +++++-- .../com/greenart7c3/nostrsigner/service/IntentUtils.kt | 6 ++++++ .../nostrsigner/ui/components/SingleEventHomeScreen.kt | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/models/BunkerRequest.kt b/app/src/main/java/com/greenart7c3/nostrsigner/models/BunkerRequest.kt index 855891fd..a3e7b3e2 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/models/BunkerRequest.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/models/BunkerRequest.kt @@ -24,6 +24,7 @@ data class BunkerRequest( var secret: String, var currentAccount: String, var encryptionType: EncryptionType, + var nostrConnectSecret: String, ) { fun toJson(): String { return mapper.writeValueAsString(this) @@ -92,6 +93,7 @@ data class BunkerRequest( secret = jsonObject.get("secret")?.asText()?.intern() ?: "", currentAccount = jsonObject.get("currentAccount")?.asText()?.intern() ?: "", encryptionType = encryptionType, + nostrConnectSecret = jsonObject.get("nostrConnectSecret")?.asText()?.intern() ?: "", ) } @@ -127,6 +129,7 @@ data class BunkerRequest( gen.writeStringField("secret", value.secret) gen.writeStringField("currentAccount", value.currentAccount) gen.writeStringField("encryptionType", value.encryptionType.toString()) + gen.writeStringField("nostrConnectSecret", value.nostrConnectSecret) gen.writeEndObject() } } 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 f38688ad..137c9b9f 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/EventNotificationConsumer.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/EventNotificationConsumer.kt @@ -132,7 +132,7 @@ class EventNotificationConsumer(private val applicationContext: Context) { applicationContext, acc, bunkerRequest, - BunkerResponse(bunkerRequest.id, "ack", null), + BunkerResponse(bunkerRequest.id, bunkerRequest.nostrConnectSecret.ifBlank { "ack" }, null), permission.application.relays, onLoading = {}, onDone = {}, @@ -248,7 +248,10 @@ class EventNotificationConsumer(private val applicationContext: Context) { onDone = { }, ) } else { - val index = localCursor.getColumnIndex("event") + var index = localCursor.getColumnIndex("event") + if (index == -1) { + index = localCursor.getColumnIndex("result") + } val result = localCursor.getString(index) IntentUtils.sendBunkerResponse( diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt index 23aea172..217c5fae 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt @@ -799,6 +799,7 @@ object IntentUtils { val parsedData = URLDecoder.decode(split.drop(1).joinToString { it }.replace("+", "%2b"), "utf-8") val splitParsedData = parsedData.split("&") val permissions = mutableListOf() + var nostrConnectSecret = "" splitParsedData.forEach { val internalSplit = it.split("=") val paramName = internalSplit.first() @@ -816,6 +817,10 @@ object IntentUtils { name = json } + if (paramName == "secret") { + nostrConnectSecret = json + } + if (paramName == "perms") { if (json.isNotEmpty()) { val splitPerms = json.split(",") @@ -891,6 +896,7 @@ object IntentUtils { "", account.signer.keyPair.pubKey.toNpub(), EncryptionType.NIP04, + nostrConnectSecret, ), route, null, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt index 81cf3236..d624cde8 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt @@ -105,7 +105,7 @@ fun SingleEventHomeScreen( { permissions, signPolicy -> val sig = if (intentData.type == SignerType.CONNECT) { - "ack" + intentData.bunkerRequest!!.nostrConnectSecret.ifBlank { "ack" } } else if (intentData.bunkerRequest != null) { account.signer.keyPair.pubKey.toHexKey() } else {