Make goskatespots.nostr1.com the top-priority catching relay
- reqRouter now always queries the community relay (SKATE_RELAY) first, even when a user hasn't added it to their read list, so curated skate content takes priority in NPool's first-seen dedup ordering - eventRouter publishes to the catching relay first, then user write relays - Gated behind the existing useSkateRelay setting (default: true) Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
This commit is contained in:
parent
d7af2626ff
commit
7d37a5effd
1 changed files with 20 additions and 4 deletions
|
|
@ -57,14 +57,25 @@ const NostrProvider: React.FC<NostrProviderProps> = (props) => {
|
||||||
.filter(r => r.read)
|
.filter(r => r.read)
|
||||||
.map(r => r.url);
|
.map(r => r.url);
|
||||||
|
|
||||||
|
// --- Community "catching" relay: top hierarchy ---
|
||||||
|
// goskatespots.nostr1.com is the app's curated, authoritative relay.
|
||||||
|
// It is ALWAYS queried first (even if a user hasn't added it to their
|
||||||
|
// read list), so curated skate content takes priority. Other relays act
|
||||||
|
// as supplementary sources for redundancy and reach.
|
||||||
|
if (useSkateRelay.current) {
|
||||||
|
routes.set(SKATE_RELAY, filters);
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure we always have at least one relay
|
// Ensure we always have at least one relay
|
||||||
if (readRelays.length === 0) {
|
if (readRelays.length === 0 && routes.size === 0) {
|
||||||
console.warn('[NostrProvider] No read relays configured, using defaults');
|
console.warn('[NostrProvider] No read relays configured, using defaults');
|
||||||
for (const relay of DEFAULT_RELAYS) {
|
for (const relay of DEFAULT_RELAYS) {
|
||||||
routes.set(relay.url, filters);
|
routes.set(relay.url, filters);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (const url of readRelays) {
|
for (const url of readRelays) {
|
||||||
|
// Skip re-adding the catching relay (already set above with priority)
|
||||||
|
if (url === SKATE_RELAY) continue;
|
||||||
routes.set(url, filters);
|
routes.set(url, filters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -82,14 +93,19 @@ const NostrProvider: React.FC<NostrProviderProps> = (props) => {
|
||||||
.filter(r => r.write)
|
.filter(r => r.write)
|
||||||
.map(r => r.url);
|
.map(r => r.url);
|
||||||
|
|
||||||
const allRelays = new Set<string>(writeRelays);
|
const allRelays = new Set<string>();
|
||||||
|
|
||||||
// Include community relay if setting is enabled (default: true)
|
// Catching relay first: publish curated skate content to the community
|
||||||
// This ensures skate content is published to the community relay for discoverability
|
// relay as the top-priority write target for discoverability.
|
||||||
if (useSkateRelay.current) {
|
if (useSkateRelay.current) {
|
||||||
allRelays.add(SKATE_RELAY);
|
allRelays.add(SKATE_RELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Then the user's own write relays for redundancy and reach.
|
||||||
|
for (const url of writeRelays) {
|
||||||
|
allRelays.add(url);
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure we always have at least one relay
|
// Ensure we always have at least one relay
|
||||||
if (allRelays.size === 0) {
|
if (allRelays.size === 0) {
|
||||||
console.warn('No write relays configured, using defaults');
|
console.warn('No write relays configured, using defaults');
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue