nip46: only handle the first auth_url for every command.

This commit is contained in:
fiatjaf 2024-02-16 07:43:20 -03:00
parent 5626d3048b
commit bb1e6f4356
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
1 changed files with 7 additions and 1 deletions

View File

@ -83,6 +83,7 @@ export class BunkerSigner {
reject: (_: string) => void
}
}
private waitingForAuth: { [id: string]: boolean }
private secretKey: Uint8Array
public bp: BunkerPointer
@ -104,8 +105,10 @@ export class BunkerSigner {
this.idPrefix = Math.random().toString(36).substring(7)
this.serial = 0
this.listeners = {}
this.waitingForAuth = {}
const listeners = this.listeners
const waitingForAuth = this.waitingForAuth
this.subCloser = this.pool.subscribeMany(
this.bp.relays,
@ -114,7 +117,9 @@ export class BunkerSigner {
async onevent(event: NostrEvent) {
const { id, result, error } = JSON.parse(await decrypt(clientSecretKey, event.pubkey, event.content))
if (result === 'auth_url') {
if (result === 'auth_url' && waitingForAuth[id]) {
delete listeners[id]
if (params.onauth) {
params.onauth(error)
} else {
@ -165,6 +170,7 @@ export class BunkerSigner {
// setup callback listener
this.listeners[id] = { resolve, reject }
this.waitingForAuth[id] = true
// publish the event
await Promise.any(this.pool.publish(this.bp.relays, verifiedEvent))