diff --git a/.changeset/smart-years-end.md b/.changeset/smart-years-end.md new file mode 100644 index 0000000..e38fde4 --- /dev/null +++ b/.changeset/smart-years-end.md @@ -0,0 +1,5 @@ +--- +"nsite-ts": patch +--- + +Use users relays when searching for blossom servers diff --git a/src/blossom.ts b/src/blossom.ts index 30081fd..1d4b645 100644 --- a/src/blossom.ts +++ b/src/blossom.ts @@ -1,13 +1,18 @@ import { getServersFromServerListEvent, USER_BLOSSOM_SERVER_LIST_KIND } from "blossom-client-sdk"; +import { NDKRelaySet } from "@nostr-dev-kit/ndk"; import ndk from "./ndk.js"; import { BLOSSOM_SERVERS, MAX_FILE_SIZE } from "./env.js"; import { makeRequestWithAbort } from "./helpers/http.js"; -export async function getUserBlossomServers(pubkey: string) { - const blossomServersEvent = await ndk.fetchEvent([{ kinds: [USER_BLOSSOM_SERVER_LIST_KIND], authors: [pubkey] }]); +export async function getUserBlossomServers(pubkey: string, relays?: string[]) { + const blossomServersEvent = await ndk.fetchEvent( + [{ kinds: [USER_BLOSSOM_SERVER_LIST_KIND], authors: [pubkey] }], + {}, + relays ? NDKRelaySet.fromRelayUrls(relays, ndk, true) : undefined, + ); - return blossomServersEvent && getServersFromServerListEvent(blossomServersEvent).map((u) => u.toString()); + return blossomServersEvent ? getServersFromServerListEvent(blossomServersEvent).map((u) => u.toString()) : undefined; } // TODO: download the file to /tmp and verify it diff --git a/src/index.ts b/src/index.ts index 8385149..7bae3d7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -70,9 +70,16 @@ app.use(async (ctx, next) => { let servers = await userServers.get(pubkey); if (!servers) { console.log(`${pubkey}: Searching for blossom servers`); - servers = (await getUserBlossomServers(pubkey)) ?? []; + servers = await getUserBlossomServers(pubkey, relays); - await userServers.set(pubkey, servers); + if (servers) { + await userServers.set(pubkey, servers); + console.log(`${pubkey}: Found ${servers.length} servers`); + } else { + servers = []; + await userServers.set(pubkey, [], 30_000); + console.log(`${pubkey}: Failed to find servers`); + } } servers.push(...BLOSSOM_SERVERS); @@ -93,7 +100,7 @@ app.use(async (ctx, next) => { } ctx.status = 500; - ctx.body = "Failed to download blob"; + ctx.body = "Failed to find blob"; } else await next(); });