From d734c424f19bbec89274d828c3a2b70dd3ef221a Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 9 Oct 2024 12:51:00 -0700 Subject: follows --- lib/nostr.ts | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/nostr.ts b/lib/nostr.ts index ca09649c..e4d87b42 100644 --- a/lib/nostr.ts +++ b/lib/nostr.ts @@ -10,7 +10,10 @@ export const serverPubkey = getPublicKey( nip19.decode(config.nostrKey).data as Uint8Array, ); -let alwaysTrue: any = (t: Event) => { t[Symbol("verified")] = true; return true; }; +let alwaysTrue: any = (t: Event) => { + t[Symbol("verified")] = true; + return true; +}; export let pool = new AbstractSimplePool({ verifyEvent: alwaysTrue }); export async function send(ev, url = config.nostr) { @@ -107,14 +110,36 @@ export let getRelays = async (pubkey): Promise => { }; export let getProfile = async (pubkey) => { - if (await db.sIsMember("noprofile", pubkey)) return; + let noprofile = await db.sIsMember("noprofile", pubkey); + if (noprofile) return; + let pubkeys = [pubkey]; let relays = [config.nostr]; - let filter = { authors: [pubkey], kinds: [0] }; + let filter: any = { authors: pubkeys, kinds: [0] }; + let ev = await pool.get(relays, filter); + + if (!ev) { + filter = { cache: ["user_infos", { pubkeys }] }; + ev = (await pool.querySync([config.cache], filter)).find( + (e) => e.kind === 0, + ); + } + + if (!ev) { + ({ write: relays } = await getRelays(pubkey)); + ev = await pool.get(relays, filter); + } + if (ev) { + send(ev); return JSON.parse(ev.content); - } else - getRelays(pubkey).then(({ write: relays }) => - pool.get(relays, filter).then(send), - ); + } else return anon(pubkey); }; + +export let anon = (pubkey) => ({ + name: pubkey.substr(0, 6), + pubkey, + anon: true, + follows: [], + followers: [], +}); -- cgit v1.2.3