Extend per-relay auth permissions to multi-event screens

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
This commit is contained in:
Claude
2026-03-09 10:48:38 +00:00
parent 0c81e17964
commit 5b2d4cd3fb
2 changed files with 30 additions and 2 deletions
@@ -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,
)
}
@@ -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,
)
}