aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/nostr.ts40
-rw-r--r--lib/utils.ts11
2 files changed, 43 insertions, 8 deletions
diff --git a/lib/nostr.ts b/lib/nostr.ts
index 234312df..10817c71 100644
--- a/lib/nostr.ts
+++ b/lib/nostr.ts
@@ -146,15 +146,39 @@ export let anon = (pubkey) => ({
});
export let getCount = async (pubkey) => {
- let filter: any = { kinds: [3], "#p": [pubkey] };
- let ev = await pool.get([config.nostr], filter, opts);
let created_at;
+ let filter: any = { kinds: [3], authors: [pubkey] };
+ let ev = await pool.get([config.nostr], filter, opts);
+
+ if (!ev) {
+ let { relays } = config;
+ ({ write: relays } = await getRelays(pubkey));
+
+ filter = { kinds: [3], authors: [pubkey] };
+ ev = await pool.get(relays, filter, opts);
+ send(ev);
+ }
+
+ if (ev) ({ created_at } = ev);
+
+ let follows = 0;
+ let cache = await g(`${pubkey}:follows:n`);
+ if (cache && cache.t >= created_at) ({ follows } = cache);
+ else {
+ follows = ev.tags
+ .map((t) => t[0] === "p" && t[1])
+ .filter((p) => p && p.length === 64).length;
+ await s(`${pubkey}:follows:n`, { follows, t: created_at });
+ }
+
+ filter = { kinds: [3], "#p": [pubkey] };
+ ev = await pool.get([config.nostr], filter, opts);
if (ev) ({ created_at } = ev);
- let count = 0;
- let cache = await g(`${pubkey}:followers:n`);
+ let followers = 0;
+ cache = await g(`${pubkey}:followers:n`);
- if (cache && cache.t >= created_at) ({ count } = cache);
+ if (cache && cache.t >= created_at) ({ followers } = cache);
else {
let filter: any = { cache: ["user_infos", { pubkeys: [pubkey] }] };
let infos = await pool.querySync([config.cache], filter, opts);
@@ -163,10 +187,10 @@ export let getCount = async (pubkey) => {
let counts = {};
if (f) {
counts = JSON.parse(f.content);
- count = counts[pubkey];
- await s(`${pubkey}:count`, { count, t: created_at });
+ followers = counts[pubkey];
+ await s(`${pubkey}:followers:n`, { followers, t: created_at });
}
}
- return count;
+ return { follows, followers };
};
diff --git a/lib/utils.ts b/lib/utils.ts
index a805f343..7bcb4a3d 100644
--- a/lib/utils.ts
+++ b/lib/utils.ts
@@ -168,3 +168,14 @@ export function formatReceipt(items, currency) {
}
export let t = ({ language = "en" }) => locales[language];
+
+export let time = (() => {
+ let count = 0, started = false;
+ return () => {
+ if (!started) {
+ console.time('');
+ started = true;
+ }
+ console.timeLog('', ++count);
+ };
+})();