feat: default to publishing posts only to outbox/inbox relays

This commit is contained in:
codytseng
2025-08-30 13:06:41 +08:00
parent 489ce67343
commit 9759e3e750
4 changed files with 6 additions and 30 deletions

View File

@@ -137,7 +137,7 @@ export default function ReplyNoteList({ index, event }: { index?: number; event:
rootInfo.type === 'E' rootInfo.type === 'E'
? client.getSeenEventRelayUrls(rootInfo.id) ? client.getSeenEventRelayUrls(rootInfo.id)
: rootInfo.type === 'A' : rootInfo.type === 'A'
? client.getCurrentRelayUrls() ? client.getSeenEventRelayUrls(rootInfo.eventId)
: [] : []
relayUrls.unshift(...seenOn) relayUrls.unshift(...seenOn)
@@ -317,7 +317,7 @@ export default function ReplyNoteList({ index, event }: { index?: number; event:
})} })}
</div> </div>
{!loading && ( {!loading && (
<div className="text-sm mt-2 text-center text-muted-foreground"> <div className="text-sm mt-2 mb-3 text-center text-muted-foreground">
{replies.length > 0 ? t('no more replies') : t('no replies')} {replies.length > 0 ? t('no more replies') : t('no replies')}
</div> </div>
)} )}

View File

@@ -1,11 +1,8 @@
import { DEFAULT_FAVORITE_RELAYS } from '@/constants' import { DEFAULT_FAVORITE_RELAYS } from '@/constants'
import { getRelaySetFromEvent } from '@/lib/event-metadata' import { getRelaySetFromEvent } from '@/lib/event-metadata'
import { checkAlgoRelay } from '@/lib/relay'
import { isWebsocketUrl, normalizeUrl } from '@/lib/url' import { isWebsocketUrl, normalizeUrl } from '@/lib/url'
import client from '@/services/client.service'
import indexedDb from '@/services/indexed-db.service' import indexedDb from '@/services/indexed-db.service'
import storage from '@/services/local-storage.service' import storage from '@/services/local-storage.service'
import relayInfoService from '@/services/relay-info.service'
import { TFeedInfo, TFeedType } from '@/types' import { TFeedInfo, TFeedType } from '@/types'
import { kinds } from 'nostr-tools' import { kinds } from 'nostr-tools'
import { createContext, useContext, useEffect, useRef, useState } from 'react' import { createContext, useContext, useEffect, useRef, useState } from 'react'
@@ -103,9 +100,6 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
setRelayUrls([normalizedUrl]) setRelayUrls([normalizedUrl])
storage.setFeedInfo(newFeedInfo, pubkey) storage.setFeedInfo(newFeedInfo, pubkey)
setIsReady(true) setIsReady(true)
const relayInfo = await relayInfoService.getRelayInfo(normalizedUrl)
client.setCurrentRelayUrls(checkAlgoRelay(relayInfo) ? [] : [normalizedUrl])
return return
} }
if (feedType === 'relays') { if (feedType === 'relays') {
@@ -135,11 +129,6 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
setRelayUrls(relaySet.relayUrls) setRelayUrls(relaySet.relayUrls)
storage.setFeedInfo(newFeedInfo, pubkey) storage.setFeedInfo(newFeedInfo, pubkey)
setIsReady(true) setIsReady(true)
const relayInfos = await relayInfoService.getRelayInfos(relaySet.relayUrls)
client.setCurrentRelayUrls(
relaySet.relayUrls.filter((_, i) => !relayInfos[i] || !checkAlgoRelay(relayInfos[i]))
)
} }
setIsReady(true) setIsReady(true)
return return

View File

@@ -649,9 +649,9 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
relays = specifiedRelayUrls relays = specifiedRelayUrls
} else { } else {
const relayList = await client.fetchRelayList(event.pubkey) const relayList = await client.fetchRelayList(event.pubkey)
relays = (relayList?.write.slice(0, 10) ?? []) relays = (relayList?.write.slice(0, 10) ?? []).concat(
.concat(Array.from(new Set(_additionalRelayUrls)) ?? []) Array.from(new Set(_additionalRelayUrls)) ?? []
.concat(client.getCurrentRelayUrls()) )
} }
if (!relays.length) { if (!relays.length) {

View File

@@ -35,7 +35,6 @@ class ClientService extends EventTarget {
signer?: ISigner signer?: ISigner
pubkey?: string pubkey?: string
private currentRelayUrls: string[] = []
private pool: SimplePool private pool: SimplePool
private timelines: Record< private timelines: Record<
@@ -81,14 +80,6 @@ class ClientService extends EventTarget {
await indexedDb.iterateProfileEvents((profileEvent) => this.addUsernameToIndex(profileEvent)) await indexedDb.iterateProfileEvents((profileEvent) => this.addUsernameToIndex(profileEvent))
} }
setCurrentRelayUrls(urls: string[]) {
this.currentRelayUrls = urls
}
getCurrentRelayUrls() {
return this.currentRelayUrls
}
async publishEvent(relayUrls: string[], event: NEvent) { async publishEvent(relayUrls: string[], event: NEvent) {
try { try {
const uniqueRelayUrls = Array.from(new Set(relayUrls)) const uniqueRelayUrls = Array.from(new Set(relayUrls))
@@ -626,11 +617,7 @@ class ClientService extends EventTarget {
} = {} } = {}
) { ) {
const relays = Array.from(new Set(urls)) const relays = Array.from(new Set(urls))
const events = await this.query( const events = await this.query(relays.length > 0 ? relays : BIG_RELAY_URLS, filter, onevent)
relays.length > 0 ? relays : this.currentRelayUrls.concat(BIG_RELAY_URLS),
filter,
onevent
)
if (cache) { if (cache) {
events.forEach((evt) => { events.forEach((evt) => {
this.addEventToCache(evt) this.addEventToCache(evt)