diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/nostr.ts | 40 | ||||
| -rw-r--r-- | lib/utils.ts | 11 |
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); + }; +})(); |
