From 5b2d4cd3fbfa1f9479eeae494c4e4d2e2c5e4c94 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 9 Mar 2026 10:48:38 +0000 Subject: [PATCH] Extend per-relay auth permissions to multi-event screens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kind 22242 relay auth events in the batch approve/discard flows now store relay-specific permissions just like the single-event screens: - BunkerMultiEventHomeScreen: discard-all extracts kind + relay for SIGN_EVENT requests; approve-all passes relay URL for kind 22242 sign requests to acceptOrRejectPermission. - IntentMultiEventHomeScreen: same treatment for the Intent path — discard-all passes kind + relay for SIGN_EVENT; approve-all passes the relay tag from the event for kind 22242. Non-22242 events are unaffected (relay stays ""). https://claude.ai/code/session_01Dm9zoUbbzdJzuXTNdAVhfW --- .../ui/components/BunkerMultiEventHomeScreen.kt | 16 +++++++++++++++- .../ui/components/IntentMultiEventHomeScreen.kt | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt index 08f075f2..31bbbb64 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt @@ -38,6 +38,7 @@ import com.greenart7c3.nostrsigner.service.ApplicationNameCache import com.greenart7c3.nostrsigner.service.BunkerRequestUtils import com.greenart7c3.nostrsigner.service.EventNotificationConsumer import com.greenart7c3.nostrsigner.service.MultiEventScreenIntents +import com.greenart7c3.nostrsigner.service.model.AmberEvent import com.greenart7c3.nostrsigner.service.toShortenHex import com.greenart7c3.nostrsigner.ui.RememberType import com.greenart7c3.nostrsigner.ui.navigation.Route @@ -294,14 +295,21 @@ fun BunkerMultiEventHomeScreen( ) if (request.rememberType.value != RememberType.NEVER && request.checked.value) { + val rejectKind = if (request.request is BunkerRequestSign) request.request.event.kind else null + val rejectRelay = if (request.request is BunkerRequestSign && request.request.event.kind == 22242) { + AmberEvent.relay(request.request.event) ?: "" + } else { + "" + } AmberUtils.acceptOrRejectPermission( application, localKey, BunkerRequestUtils.getTypeFromBunker(request.request), - null, + rejectKind, false, request.rememberType.value, thisAccount, + relay = rejectRelay, ) } @@ -376,6 +384,11 @@ fun BunkerMultiEventHomeScreen( val localEvent = request.signedEvent!! if (request.rememberType.value != RememberType.NEVER && request.checked.value) { + val signRelay = if (localEvent.kind == 22242) { + AmberEvent.relay(localEvent) ?: "" + } else { + "" + } AmberUtils.acceptOrRejectPermission( application = application, key = localKey, @@ -384,6 +397,7 @@ fun BunkerMultiEventHomeScreen( value = true, rememberType = request.rememberType.value, account = thisAccount, + relay = signRelay, ) } diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt index 7cbd77bb..ea5bcced 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt @@ -41,6 +41,7 @@ import com.greenart7c3.nostrsigner.models.TagArrayEncryptedDataKind import com.greenart7c3.nostrsigner.service.AmberUtils import com.greenart7c3.nostrsigner.service.ApplicationNameCache import com.greenart7c3.nostrsigner.service.MultiEventScreenIntents +import com.greenart7c3.nostrsigner.service.model.AmberEvent import com.greenart7c3.nostrsigner.service.toShortenHex import com.greenart7c3.nostrsigner.ui.RememberType import com.greenart7c3.nostrsigner.ui.navigation.Route @@ -298,14 +299,21 @@ fun IntentMultiEventHomeScreen( ) if (intentData.rememberType.value != RememberType.NEVER && intentData.checked.value) { + val rejectKind = if (intentData.type == SignerType.SIGN_EVENT) intentData.event?.kind else null + val rejectRelay = if (intentData.type == SignerType.SIGN_EVENT && intentData.event?.kind == 22242) { + intentData.event?.let { AmberEvent.relay(it) } ?: "" + } else { + "" + } AmberUtils.acceptOrRejectPermission( application, localKey, intentData.type, - null, + rejectKind, false, intentData.rememberType.value, thisAccount, + relay = rejectRelay, ) } @@ -388,6 +396,11 @@ fun IntentMultiEventHomeScreen( val localEvent = intentData.event!! if (intentData.rememberType.value != RememberType.NEVER && intentData.checked.value) { + val signRelay = if (localEvent.kind == 22242) { + AmberEvent.relay(localEvent) ?: "" + } else { + "" + } AmberUtils.acceptOrRejectPermission( application, localKey, @@ -396,6 +409,7 @@ fun IntentMultiEventHomeScreen( true, intentData.rememberType.value, thisAccount, + relay = signRelay, ) }