aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/nostr.js21
-rw-r--r--routes/events.js8
-rw-r--r--routes/users.js9
3 files changed, 35 insertions, 3 deletions
diff --git a/lib/nostr.js b/lib/nostr.js
index 53c8d7d1..477d2b12 100644
--- a/lib/nostr.js
+++ b/lib/nostr.js
@@ -18,6 +18,8 @@ let timeout;
pool.on("event", async (relay, sub, ev) => {
try {
if (sub === "live") {
+ let { pubkey } = ev;
+
if (Math.abs(Math.floor(Date.now() / 1000) - ev.created_at) > 7200)
return;
@@ -34,16 +36,31 @@ pool.on("event", async (relay, sub, ev) => {
}
coinos.send(["EVENT", ev]);
- if (ev.kind === 1) broadcast("event", ev);
+
+ ev.user = JSON.parse(await redis.get(`user:${pubkey}`)) || {
+ username: pubkey.substr(0, 6),
+ pubkey,
+ anon: true
+ };
+
+ if (ev.kind === 1) {
+ broadcast("event", ev);
+ }
}
} else {
let pubkey = sub;
clearTimeout(store.timeouts[pubkey]);
- store.fetching[pubkey] = true;
+ ev.user = JSON.parse(await redis.get(`user:${pubkey}`)) || {
+ username: pubkey.substr(0, 6),
+ pubkey,
+ anon: true
+ };
+
await redis.sAdd(pubkey, ev.id);
await redis.set(`ev:${ev.id}`, JSON.stringify(ev));
+ store.fetching[pubkey] = true;
store.timeouts[pubkey] = setTimeout(
() => (store.fetching[pubkey] = false),
100
diff --git a/routes/events.js b/routes/events.js
index 18abf1d7..07062140 100644
--- a/routes/events.js
+++ b/routes/events.js
@@ -1,4 +1,5 @@
import app from "$app";
+import db from "$db";
import redis from "$lib/redis";
import { pool } from "$lib/nostr";
import store from "$lib/store";
@@ -13,6 +14,13 @@ app.get("/:pubkey/events", async (req, res) => {
500
);
+ let user = await db.User.findOne({
+ where: { pubkey }
+ });
+
+ if (!user) user = { username: pubkey.substr(0,6), pubkey, anon: true }
+ await redis.set(`user:${pubkey}`, JSON.stringify(user));
+
pool.subscribe(pubkey, {
limit: 500,
kinds: [1],
diff --git a/routes/users.js b/routes/users.js
index 82a71549..70186145 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -57,7 +57,14 @@ app.get("/users/:username", async (req, res) => {
const { username } = req.params;
let user = await db.User.findOne({
- attributes: ["username", "banner", "profile", "address", "currency"],
+ attributes: [
+ "username",
+ "banner",
+ "profile",
+ "address",
+ "currency",
+ "pubkey"
+ ],
where: Sequelize.where(
Sequelize.fn("lower", Sequelize.col("username")),
username.toLowerCase()