💨
This commit is contained in:
@@ -430,9 +430,7 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
if (mentions.length > 0) {
|
if (mentions.length > 0) {
|
||||||
const relayLists = await Promise.all(
|
const relayLists = await client.fetchRelayLists(mentions)
|
||||||
mentions.map((pubkey) => client.fetchRelayList(pubkey))
|
|
||||||
)
|
|
||||||
relayLists.forEach((relayList) => {
|
relayLists.forEach((relayList) => {
|
||||||
additionalRelayUrls.push(...relayList.read.slice(0, 4))
|
additionalRelayUrls.push(...relayList.read.slice(0, 4))
|
||||||
})
|
})
|
||||||
@@ -445,8 +443,8 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
|
|||||||
const event = await signEvent(draftEvent)
|
const event = await signEvent(draftEvent)
|
||||||
const relays = specifiedRelayUrls?.length
|
const relays = specifiedRelayUrls?.length
|
||||||
? specifiedRelayUrls
|
? specifiedRelayUrls
|
||||||
: (relayList?.write.slice(0, 5) ?? [])
|
: (relayList?.write.slice(0, 10) ?? [])
|
||||||
.concat(additionalRelayUrls ?? [])
|
.concat(Array.from(new Set(additionalRelayUrls)) ?? [])
|
||||||
.concat(client.getCurrentRelayUrls())
|
.concat(client.getCurrentRelayUrls())
|
||||||
if (!relays.length) {
|
if (!relays.length) {
|
||||||
relays.push(...BIG_RELAY_URLS)
|
relays.push(...BIG_RELAY_URLS)
|
||||||
|
|||||||
@@ -111,23 +111,23 @@ class ClientService extends EventTarget {
|
|||||||
const relay = await this.pool.ensureRelay(url)
|
const relay = await this.pool.ensureRelay(url)
|
||||||
return relay
|
return relay
|
||||||
.publish(event)
|
.publish(event)
|
||||||
.then((reason) => {
|
|
||||||
this.trackEventSeenOn(event.id, relay)
|
|
||||||
return reason
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
if (
|
if (
|
||||||
error instanceof Error &&
|
error instanceof Error &&
|
||||||
error.message.startsWith('auth-required:') &&
|
error.message.startsWith('auth-required') &&
|
||||||
!!that.signer
|
!!that.signer
|
||||||
) {
|
) {
|
||||||
relay
|
return relay
|
||||||
.auth((authEvt: EventTemplate) => that.signer!.signEvent(authEvt))
|
.auth((authEvt: EventTemplate) => that.signer!.signEvent(authEvt))
|
||||||
.then(() => relay.publish(event))
|
.then(() => relay.publish(event))
|
||||||
} else {
|
} else {
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.then((reason) => {
|
||||||
|
this.trackEventSeenOn(event.id, relay)
|
||||||
|
return reason
|
||||||
|
})
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
this.dispatchEvent(new CustomEvent('eventPublished', { detail: event }))
|
this.dispatchEvent(new CustomEvent('eventPublished', { detail: event }))
|
||||||
@@ -207,20 +207,21 @@ class ClientService extends EventTarget {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const relayCount = Object.keys(group).length
|
const relayCount = Object.keys(group).length
|
||||||
const coveredAuthorSet = new Set<string>()
|
const coveredCount = new Map<string, number>()
|
||||||
Object.entries(group)
|
Object.entries(group)
|
||||||
.sort(([, a], [, b]) => b.size - a.size)
|
.sort(([, a], [, b]) => b.size - a.size)
|
||||||
.forEach(([url, pubkeys]) => {
|
.forEach(([url, pubkeys]) => {
|
||||||
if (
|
if (
|
||||||
relayCount > 10 &&
|
relayCount > 10 &&
|
||||||
pubkeys.size < 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]
|
delete group[url]
|
||||||
|
} else {
|
||||||
|
pubkeys.forEach((pubkey) => {
|
||||||
|
coveredCount.set(pubkey, (coveredCount.get(pubkey) ?? 0) + 1)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
pubkeys.forEach((pubkey) => {
|
|
||||||
coveredAuthorSet.add(pubkey)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
subRequests.push(
|
subRequests.push(
|
||||||
@@ -375,7 +376,7 @@ class ClientService extends EventTarget {
|
|||||||
oneose?.(eosed)
|
oneose?.(eosed)
|
||||||
},
|
},
|
||||||
onclose: (reason: string) => {
|
onclose: (reason: string) => {
|
||||||
if (!reason.startsWith('auth-required:')) {
|
if (!reason.startsWith('auth-required')) {
|
||||||
closedCount++
|
closedCount++
|
||||||
closeReasons.push(reason)
|
closeReasons.push(reason)
|
||||||
if (closedCount >= startedCount) {
|
if (closedCount >= startedCount) {
|
||||||
@@ -446,7 +447,7 @@ class ClientService extends EventTarget {
|
|||||||
that.trackEventSeenOn(id, relay)
|
that.trackEventSeenOn(id, relay)
|
||||||
},
|
},
|
||||||
onclose(reason) {
|
onclose(reason) {
|
||||||
if (!reason.startsWith('auth-required:') || hasAuthed) {
|
if (!reason.startsWith('auth-required') || hasAuthed) {
|
||||||
resolve()
|
resolve()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user