From 46d94eaac743f1137521c19762f372a66d72228e Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 10 Jul 2024 20:27:05 +0100 Subject: [PATCH] feat: use relays from naddr and nevent to find repo events and proposals not default relays --- src/lib/stores/repo.ts | 5 +++-- src/lib/stores/repos.ts | 21 +++++++++++++++------ src/lib/wrappers/RepoPageWrapper.svelte | 4 ++-- src/routes/e/[nostr_ref]/+page.svelte | 9 ++++++--- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/lib/stores/repo.ts b/src/lib/stores/repo.ts index 254f637..2382481 100644 --- a/src/lib/stores/repo.ts +++ b/src/lib/stores/repo.ts @@ -35,13 +35,14 @@ let selected_repo_a: string = '' let selected_unsubscriber: Unsubscriber export const ensureSelectedRepoCollection = ( - a: string + a: string, + naddr_relays: string[] | undefined = undefined, ): Writable => { if (selected_repo_a !== a) { let loading = true selected_repo_a = a if (selected_unsubscriber) selected_unsubscriber() - selected_unsubscriber = ensureRepoCollection(a).subscribe( + selected_unsubscriber = ensureRepoCollection(a, naddr_relays).subscribe( (repo_collection) => { selected_repo_collection.set({ ...repo_collection }) if (loading && !repo_collection.loading) { diff --git a/src/lib/stores/repos.ts b/src/lib/stores/repos.ts index 5a149a8..029432b 100644 --- a/src/lib/stores/repos.ts +++ b/src/lib/stores/repos.ts @@ -24,7 +24,10 @@ export const repo_collections: { [a: string]: Writable } = {} -export const ensureRepo = (a: string | NDKEvent): Writable => { +export const ensureRepo = ( + a: string | NDKEvent, + naddr_relays: string[] | undefined = undefined, +): Writable => { if (typeof a !== 'string') { const repo_event = eventToRepoEvent(a) if (repo_event) { @@ -62,7 +65,7 @@ export const ensureRepo = (a: string | NDKEvent): Writable => { groupableDelay: 200, closeOnEose: false, }, - NDKRelaySet.fromRelayUrls(base_relays, ndk) + NDKRelaySet.fromRelayUrls([...base_relays, ...(naddr_relays || [])], ndk) ) sub.on('event', (event: NDKEvent) => { const repo_event = eventToRepoEvent(event) @@ -102,9 +105,12 @@ export const ensureRepo = (a: string | NDKEvent): Writable => { return repos[a] } -export const returnRepo = async (a: string): Promise => { +export const returnRepo = async ( + a: string, + naddr_relays: string[] | undefined = undefined, +): Promise => { return new Promise((r) => { - const unsubscriber = ensureRepo(a).subscribe((c) => { + const unsubscriber = ensureRepo(a, naddr_relays).subscribe((c) => { if (!c.loading) { setTimeout(() => { if (unsubscriber) unsubscriber() @@ -115,7 +121,10 @@ export const returnRepo = async (a: string): Promise => { }) } -export const ensureRepoCollection = (a: string): Writable => { +export const ensureRepoCollection = ( + a: string, + naddr_relays: string[] | undefined = undefined, +): Writable => { if (!repo_collections[a]) { const base: RepoCollection = { ...collection_defaults, @@ -130,7 +139,7 @@ export const ensureRepoCollection = (a: string): Writable => { const { pubkey, identifier } = a_ref - returnRepo(a).then(async (repo_event) => { + returnRepo(a, naddr_relays).then(async (repo_event) => { if (get(repo_collections[a]).events.length > 0) return repo_collections[a].update((collection) => { return { diff --git a/src/lib/wrappers/RepoPageWrapper.svelte b/src/lib/wrappers/RepoPageWrapper.svelte index a3e3581..f85572f 100644 --- a/src/lib/wrappers/RepoPageWrapper.svelte +++ b/src/lib/wrappers/RepoPageWrapper.svelte @@ -10,7 +10,7 @@ import { ensureProposalSummaries } from '$lib/stores/Proposals' import { ensureIssueSummaries } from '$lib/stores/Issues' import type { RepoPage } from '$lib/components/repo/type' - import { naddrToRepoA } from '$lib/components/repo/utils' + import { naddrToPointer, naddrToRepoA } from '$lib/components/repo/utils' import AlertError from '$lib/components/AlertError.svelte' export let repo_naddr = '' @@ -26,7 +26,7 @@ if (a_result) { a = a_result invalid_naddr = false - ensureSelectedRepoCollection(a) + ensureSelectedRepoCollection(a, naddrToPointer(repo_naddr)?.relays) ensureProposalSummaries(a) ensureIssueSummaries(a) } else { diff --git a/src/routes/e/[nostr_ref]/+page.svelte b/src/routes/e/[nostr_ref]/+page.svelte index cd77a93..b826525 100644 --- a/src/routes/e/[nostr_ref]/+page.svelte +++ b/src/routes/e/[nostr_ref]/+page.svelte @@ -23,7 +23,10 @@ waited = true } - let lookupEvent = (id: string) => { + let lookupEvent = ( + id: string, + relays: string[] | undefined = undefined, + ) => { let sub = ndk.subscribe( { ids: [id], @@ -32,7 +35,7 @@ { closeOnEose: false, }, - NDKRelaySet.fromRelayUrls(base_relays, ndk) + NDKRelaySet.fromRelayUrls([ ...base_relays, ...(relays || [])] ndk) ) sub.on('event', (event: NDKEvent) => { @@ -82,7 +85,7 @@ [patch_kind, issue_kind].includes(decoded.data.kind) ) ) { - lookupEvent(decoded.data.id) + lookupEvent(decoded.data.id, decoded.data.relays) } else { showError() }