This commit is contained in:
codytseng
2025-03-31 22:52:40 +08:00
parent bf86742976
commit 542c964436
2 changed files with 17 additions and 18 deletions

View File

@@ -430,9 +430,7 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
}
})
if (mentions.length > 0) {
const relayLists = await Promise.all(
mentions.map((pubkey) => client.fetchRelayList(pubkey))
)
const relayLists = await client.fetchRelayLists(mentions)
relayLists.forEach((relayList) => {
additionalRelayUrls.push(...relayList.read.slice(0, 4))
})
@@ -445,8 +443,8 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
const event = await signEvent(draftEvent)
const relays = specifiedRelayUrls?.length
? specifiedRelayUrls
: (relayList?.write.slice(0, 5) ?? [])
.concat(additionalRelayUrls ?? [])
: (relayList?.write.slice(0, 10) ?? [])
.concat(Array.from(new Set(additionalRelayUrls)) ?? [])
.concat(client.getCurrentRelayUrls())
if (!relays.length) {
relays.push(...BIG_RELAY_URLS)

View File

@@ -111,23 +111,23 @@ class ClientService extends EventTarget {
const relay = await this.pool.ensureRelay(url)
return relay
.publish(event)
.then((reason) => {
this.trackEventSeenOn(event.id, relay)
return reason
})
.catch((error) => {
if (
error instanceof Error &&
error.message.startsWith('auth-required:') &&
error.message.startsWith('auth-required') &&
!!that.signer
) {
relay
return relay
.auth((authEvt: EventTemplate) => that.signer!.signEvent(authEvt))
.then(() => relay.publish(event))
} else {
throw error
}
})
.then((reason) => {
this.trackEventSeenOn(event.id, relay)
return reason
})
})
)
this.dispatchEvent(new CustomEvent('eventPublished', { detail: event }))
@@ -207,20 +207,21 @@ class ClientService extends EventTarget {
})
const relayCount = Object.keys(group).length
const coveredAuthorSet = new Set<string>()
const coveredCount = new Map<string, number>()
Object.entries(group)
.sort(([, a], [, b]) => b.size - a.size)
.forEach(([url, pubkeys]) => {
if (
relayCount > 10 &&
pubkeys.size < 10 &&
Array.from(pubkeys).every((pubkey) => coveredAuthorSet.has(pubkey))
Array.from(pubkeys).every((pubkey) => (coveredCount.get(pubkey) ?? 0) >= 2)
) {
delete group[url]
} else {
pubkeys.forEach((pubkey) => {
coveredCount.set(pubkey, (coveredCount.get(pubkey) ?? 0) + 1)
})
}
pubkeys.forEach((pubkey) => {
coveredAuthorSet.add(pubkey)
})
})
subRequests.push(
@@ -375,7 +376,7 @@ class ClientService extends EventTarget {
oneose?.(eosed)
},
onclose: (reason: string) => {
if (!reason.startsWith('auth-required:')) {
if (!reason.startsWith('auth-required')) {
closedCount++
closeReasons.push(reason)
if (closedCount >= startedCount) {
@@ -446,7 +447,7 @@ class ClientService extends EventTarget {
that.trackEventSeenOn(id, relay)
},
onclose(reason) {
if (!reason.startsWith('auth-required:') || hasAuthed) {
if (!reason.startsWith('auth-required') || hasAuthed) {
resolve()
return
}