aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-11-07 11:32:13 -0800
committerAdam Soltys <[email protected]>2023-11-07 11:32:13 -0800
commit44765761a41af5afc0af439113f053243a0e3936 (patch)
tree8773540f4d646332e0d845b75ba86048fbe9b42f
parent66854d5de5da6f8dae3fce506f65bc5f28de1a6e (diff)
downloadcoinos-server-44765761a41af5afc0af439113f053243a0e3936.tar.gz
coinos-server-44765761a41af5afc0af439113f053243a0e3936.zip
fix contacts
-rw-r--r--routes/users.js29
1 files changed, 20 insertions, 9 deletions
diff --git a/routes/users.js b/routes/users.js
index 649c9cc7..747041eb 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -183,10 +183,19 @@ export default {
try {
l("updating user", user.username);
- let { confirm, password, pin, newpin, username, shopifyToken, shopifyStore } = body;
+ let {
+ confirm,
+ password,
+ pin,
+ newpin,
+ username,
+ shopifyToken,
+ shopifyStore
+ } = body;
if (user.pin && !(pin === user.pin)) throw new Error("Pin required");
- if (typeof newpin !== "undefined" && newpin.length === 6) user.pin = newpin;
+ if (typeof newpin !== "undefined" && newpin.length === 6)
+ user.pin = newpin;
if (user.pin === "delete") delete user.pin;
let exists;
@@ -238,7 +247,7 @@ export default {
`user:${user.username.toLowerCase().replace(/\s/g, "")}`,
user.id
);
-
+
await s(`user:${user.id}`, user);
emit(user.id, "user", user);
@@ -416,17 +425,19 @@ export default {
},
async contacts({ user: { id } }, res) {
- let i = (await g(`${id}:cindex`)) || 0;
- let payments = (await db.lRange(`${id}:payments`, i, -1)) || [];
- await db.incrBy(`${id}:cindex`, payments.length);
+ let lastlen = (await g(`${id}:lastlen`)) || 0;
+ let len = await db.lLen(`${id}:payments`);
+ let payments = (await db.lRange(`${id}:payments`, 0, len - lastlen)) || [];
+ await db.set(`${id}:lastlen`, len);
let contacts = (await g(`${id}:contacts`)) || [];
for (let { ref } of (
- await Promise.all(payments.map(async id => await g(`payment:${id}`)))
+ await Promise.all(payments.reverse().map(async id => await g(`payment:${id}`)))
).filter(p => p.type === types.internal && p.ref)) {
- !~contacts.findIndex(({ id }) => id === ref) &&
- contacts.push(await g(`user:${ref}`));
+ if (!~contacts.findIndex(({ id }) => id === ref)) {
+ contacts.unshift(await g(`user:${ref}`));
+ }
}
await s(`${id}:contacts`, contacts);