mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-09 00:28:51 +00:00
nip46: omit custodial bunker providers that don't have relays configured.
This commit is contained in:
24
nip46.ts
24
nip46.ts
@@ -93,6 +93,10 @@ export class BunkerSigner {
|
|||||||
* @param secretKey - An optional key pair.
|
* @param secretKey - An optional key pair.
|
||||||
*/
|
*/
|
||||||
public constructor(clientSecretKey: Uint8Array, bp: BunkerPointer, params: BunkerSignerParams = {}) {
|
public constructor(clientSecretKey: Uint8Array, bp: BunkerPointer, params: BunkerSignerParams = {}) {
|
||||||
|
if (bp.relays.length === 0) {
|
||||||
|
throw new Error('no relays are specified for this bunker')
|
||||||
|
}
|
||||||
|
|
||||||
this.pool = params.pool || new SimplePool()
|
this.pool = params.pool || new SimplePool()
|
||||||
this.secretKey = clientSecretKey
|
this.secretKey = clientSecretKey
|
||||||
this.relays = bp.relays
|
this.relays = bp.relays
|
||||||
@@ -242,25 +246,23 @@ export async function createAccount(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches info on available signers (nsecbunkers) using NIP-89 events.
|
* Fetches info on available providers that announce themselves using NIP-89 events.
|
||||||
*
|
|
||||||
* @returns A promise that resolves to an array of available bunker objects.
|
* @returns A promise that resolves to an array of available bunker objects.
|
||||||
*/
|
*/
|
||||||
export async function fetchCustodialbunkers(pool: AbstractSimplePool, relays: string[]): Promise<BunkerProfile[]> {
|
export async function fetchCustodialbunkers(pool: AbstractSimplePool, relays: string[]): Promise<BunkerProfile[]> {
|
||||||
const events = await pool.querySync(relays, { kinds: [Handlerinformation] })
|
const events = await pool.querySync(relays, {
|
||||||
// filter for events that handle the connect event kind
|
kinds: [Handlerinformation],
|
||||||
const filteredEvents = events.filter(event =>
|
'#k': [NostrConnect.toString()],
|
||||||
event.tags.some(tag => tag[0] === 'k' && tag[1] === NostrConnect.toString()),
|
})
|
||||||
)
|
|
||||||
|
|
||||||
// Validate bunkers by checking their NIP-05 and pubkey
|
// validate bunkers by checking their NIP-05 and pubkey
|
||||||
// Map to a more useful object
|
// map to a more useful object
|
||||||
const validatedBunkers = await Promise.all(
|
const validatedBunkers = await Promise.all(
|
||||||
filteredEvents.map(async event => {
|
events.map(async event => {
|
||||||
try {
|
try {
|
||||||
const content = JSON.parse(event.content)
|
const content = JSON.parse(event.content)
|
||||||
const bp = await queryBunkerProfile(content.nip05)
|
const bp = await queryBunkerProfile(content.nip05)
|
||||||
if (bp && bp.pubkey === event.pubkey) {
|
if (bp && bp.pubkey === event.pubkey && bp.relays.length) {
|
||||||
return {
|
return {
|
||||||
bunkerPointer: bp,
|
bunkerPointer: bp,
|
||||||
nip05: content.nip05,
|
nip05: content.nip05,
|
||||||
|
|||||||
Reference in New Issue
Block a user