aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-10-09 12:51:00 -0700
committerAdam Soltys <[email protected]>2024-10-10 12:17:05 -0700
commitd734c424f19bbec89274d828c3a2b70dd3ef221a (patch)
tree8ec38336b345539c5ea110c2800eff79c677b19d /lib
parentc0bfa4a8a45415e16ef335219c84632f4c04f97d (diff)
downloadcoinos-server-d734c424f19bbec89274d828c3a2b70dd3ef221a.tar.gz
coinos-server-d734c424f19bbec89274d828c3a2b70dd3ef221a.zip
follows
Diffstat (limited to 'lib')
-rw-r--r--lib/nostr.ts39
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: [],
+});