diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/nostr.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/nostr.js b/lib/nostr.js new file mode 100644 index 00000000..b1b24b87 --- /dev/null +++ b/lib/nostr.js @@ -0,0 +1,48 @@ +import { Relay, RelayPool } from "nostr"; +import { got } from "got"; +import { broadcast } from "$lib/sockets"; + +const { relays } = await got("https://nostr.watch/relays.json").json(); +const pool = RelayPool(relays); + +let coinos; +pool.on("open", (relay) => { + if (relay.url.includes("coinos")) coinos = relay; + relay.subscribe("subid", { limit: 1 }); +}); + +let seen = []; +pool.on("event", (relay, sub_id, ev) => { + if (seen.includes(ev.id)) return; + if (Math.abs(Math.floor(Date.now()/1000) - ev.created_at) > 7200) return; + seen.push(ev.id); + seen.length > 1000 && seen.shift(); + + if ( + coinos && + ev.kind < 5 && + !ev.content.startsWith("test") && + !ev.content.startsWith("running branle") + ) { + let parsed; + try { + parsed = JSON.parse(ev.content); + } catch (e) { + parsed = ev.content; + } + + coinos.send(["EVENT", ev]); + if (ev.kind === 1) + broadcast("event", ev); + } +}); + +function formatDate(date) { + var hours = date.getHours(); + var minutes = date.getMinutes(); + hours = hours % 12; + hours = hours ? hours : 12; + minutes = minutes < 10 ? "0" + minutes : minutes; + var strTime = hours + ":" + minutes; + return date.getMonth() + 1 + "/" + date.getDate() + " " + strTime; +} |
