diff --git a/packages/app/src/collection.ts b/packages/app/src/collection.ts index c8c03d3..d444803 100644 --- a/packages/app/src/collection.ts +++ b/packages/app/src/collection.ts @@ -3,7 +3,7 @@ import {indexBy, type Maybe, now} from '@welshman/lib' import {withGetter} from '@welshman/store' import {getFreshness, setFreshness} from './freshness' -export const collection = ({ +export const collection = ({ name, store, getKey, @@ -12,13 +12,13 @@ export const collection = ({ name: string store: Readable getKey: (item: T) => string - load: (key: string, ...args: any) => Promise + load: (key: string, ...args: LoadArgs) => Promise }) => { const indexStore = withGetter(derived(store, $items => indexBy(getKey, $items))) const getItem = (key: string) => indexStore.get().get(key) const pending = new Map>>() - const loadItem = async (key: string, ...args: any[]) => { + const loadItem = async (key: string, ...args: LoadArgs) => { if (getFreshness(name, key) > now() - 3600) { return indexStore.get().get(key) } @@ -40,7 +40,7 @@ export const collection = ({ return indexStore.get().get(key) } - const deriveItem = (key: Maybe, ...args: any[]) => { + const deriveItem = (key: Maybe, ...args: LoadArgs) => { if (!key) { return readable(undefined) } diff --git a/packages/app/src/core.ts b/packages/app/src/core.ts index 4f7caa6..248c895 100644 --- a/packages/app/src/core.ts +++ b/packages/app/src/core.ts @@ -7,6 +7,7 @@ import {createEventStore} from "@welshman/store" export const env: { DUFFLEPUD_URL?: string + [key: string]: any } = { DUFFLEPUD_URL: undefined, } diff --git a/packages/app/src/profiles.ts b/packages/app/src/profiles.ts index cfc1480..516cbe2 100644 --- a/packages/app/src/profiles.ts +++ b/packages/app/src/profiles.ts @@ -23,7 +23,7 @@ export const { store: profiles, getKey: profile => profile.event.pubkey, load: async (pubkey: string, hints = [], request: Partial = {}) => { - const relays = getWriteRelayUrls(await loadRelaySelections(pubkey)) + const relays = getWriteRelayUrls(await loadRelaySelections(pubkey, hints)) return load({ ...request, diff --git a/packages/app/src/zappers.ts b/packages/app/src/zappers.ts index 5efa6ac..c83d1f3 100644 --- a/packages/app/src/zappers.ts +++ b/packages/app/src/zappers.ts @@ -1,7 +1,7 @@ import {writable, derived} from 'svelte/store' import {withGetter} from '@welshman/store' import type {Zapper} from '@welshman/util' -import {uniq, bech32ToHex, indexBy, tryCatch, uniqBy, batcher, postJson} from '@welshman/lib' +import {uniq, identity, bech32ToHex, indexBy, tryCatch, uniqBy, batcher, postJson} from '@welshman/lib' import {env} from './core' import {collection} from './collection' import {profilesByPubkey} from './profiles' @@ -22,8 +22,10 @@ export const fetchZappers = (lnurls: string[]) => { throw new Error("DUFFLEPUD_URL is required to fetch zapper info") } - const res: any = postJson(`${base}/zapper/info`, {lnurls: lnurls.map(bech32ToHex)}) const zappersByLnurl = new Map() + const res: any = postJson(`${base}/zapper/info`, { + lnurls: lnurls.map(lnurl => tryCatch(() => bech32ToHex(lnurl))).filter(identity), + }) for (const {lnurl, info} of res?.data || []) { tryCatch(() => zappersByLnurl.set(bech32ToHex(lnurl), info))