diff options
| author | Adam Soltys <[email protected]> | 2024-10-09 12:51:00 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-10-10 12:17:05 -0700 |
| commit | d734c424f19bbec89274d828c3a2b70dd3ef221a (patch) | |
| tree | 8ec38336b345539c5ea110c2800eff79c677b19d /lib | |
| parent | c0bfa4a8a45415e16ef335219c84632f4c04f97d (diff) | |
| download | coinos-server-d734c424f19bbec89274d828c3a2b70dd3ef221a.tar.gz coinos-server-d734c424f19bbec89274d828c3a2b70dd3ef221a.zip | |
follows
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/nostr.ts | 39 |
1 files changed, 32 insertions, 7 deletions
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<any> => { }; 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: [], +}); |
