aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/nostr.ts10
-rw-r--r--routes/nostr.ts39
2 files changed, 21 insertions, 28 deletions
diff --git a/lib/nostr.ts b/lib/nostr.ts
index a1a9a245..ca09649c 100644
--- a/lib/nostr.ts
+++ b/lib/nostr.ts
@@ -4,13 +4,14 @@ import { l } from "$lib/logging";
import { fail } from "$lib/utils";
import { nip19, finalizeEvent, getPublicKey } from "nostr-tools";
import { Relay } from "nostr-tools/relay";
-import { SimplePool } from "nostr-tools";
+import { AbstractSimplePool } from "nostr-tools/abstract-pool";
export const serverPubkey = getPublicKey(
nip19.decode(config.nostrKey).data as Uint8Array,
);
-export let pool = new SimplePool();
+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) {
if (!(ev && ev.id)) return;
@@ -90,11 +91,10 @@ export let getRelays = async (pubkey): Promise<any> => {
let filter = { authors: [pubkey], kinds: [10002] };
let event = await pool.get([config.nostr], filter);
- let read = relays;
- let write = relays;
+ let read = relays;
+ let write = relays;
if (event) {
-
read = [];
write = [];
for (let r of event.tags) {
diff --git a/routes/nostr.ts b/routes/nostr.ts
index 0fce9bdc..3f801677 100644
--- a/routes/nostr.ts
+++ b/routes/nostr.ts
@@ -32,20 +32,16 @@ export default {
query: { tagsonly },
} = req;
try {
- let { relays } = config;
- ({ write: relays } = await getRelays(pubkey));
- let ev = await pool.get([config.nostr], {
- kinds: [3],
- authors: [pubkey],
- });
+ let filter = { kinds: [3], authors: [pubkey] };
+ let ev = await pool.get([config.nostr], filter);
+
if (!ev) {
- pool
- .get(relays, {
- kinds: [3],
- authors: [pubkey],
- })
- .then(send);
+ let { relays } = config;
+ ({ write: relays } = await getRelays(pubkey));
+
+ filter = { kinds: [3], authors: [pubkey] };
+ pool.get(relays, filter).then(send);
}
let created_at;
@@ -64,20 +60,17 @@ export default {
profiles.push(...(await pool.querySync([config.nostr], filter)));
}
+ let filter: any = { cache: ["user_infos", { pubkeys }] };
+ let followers = JSON.parse(
+ (await pool.querySync([config.cache], filter)).find(
+ (e) => e.kind === 10000133,
+ ).content,
+ );
+
for (let p of profiles) {
let { content, pubkey } = p;
let user = JSON.parse(content);
-
- let cache = await g(`${pubkey}:followers`);
- let followers;
- if (cache && cache.t >= created_at) ({ followers } = cache);
- else {
- let filter = { "#p": [pubkey], kinds: [3] };
- followers = await pool.querySync([config.nostr], filter);
- s(`${pubkey}:followers`, { followers, t: created_at });
- }
-
- user.followers = followers.length;
+ user.followers = followers[pubkey];
user.pubkey = pubkey;
follows.push(user);
}