From 075cad4236f386ed51f740e4ef3226435b2d5fd9 Mon Sep 17 00:00:00 2001 From: Rogerio Chaves Date: Sun, 5 Apr 2020 14:41:06 +0200 Subject: [PATCH] Prioritize owner self-chosen name --- app/lib/queries.js | 56 +++++++++++++++++++++++++++++++++++---------- app/views/index.ejs | 2 +- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/app/lib/queries.js b/app/lib/queries.js index c1358be..afdac28 100644 --- a/app/lib/queries.js +++ b/app/lib/queries.js @@ -1,17 +1,53 @@ const { promisify } = require("./utils"); const pull = require("pull-stream"); +const latestOwnerValue = (ssbServer) => ({ key, dest }, cb) => { + let value = null; + pull( + ssbServer.query.read({ + reverse: true, + query: [ + { + $filter: { + value: { + author: dest, + content: { type: "about", about: dest }, + }, + }, + }, + ], + }), + pull.filter((msg) => { + return ( + msg.value.content && + key in msg.value.content && + !(msg.value.content[key] && msg.value.content[key].remove) + ); + }), + pull.take(1), + pull.drain( + (msg) => { + value = msg.value.content[key]; + }, + (err) => { + if (err) return cb(err); + cb(null, value); + } + ) + ); +}; + const mapAuthorName = (ssbServer) => (data, callback) => { let promises = []; - const authorNamePromise = promisify(ssbServer.about.latestValue, { + const authorNamePromise = promisify(latestOwnerValue(ssbServer), { key: "name", dest: data.value.author, }); promises.push(authorNamePromise); if (data.value.content.type == "contact") { - const contactNamePromise = promisify(ssbServer.about.latestValue, { + const contactNamePromise = promisify(latestOwnerValue(ssbServer), { key: "name", dest: data.value.content.contact, }); @@ -73,19 +109,15 @@ const getPeople = (ssbServer) => }, }, ], - limit: 500, + }), + pull.filter((msg) => { + return msg.value.content && msg.value.author == msg.value.content.about; }), pull.collect((err, msgs) => { - let people = {}; - for (let person of msgs) { - const author = person.value.author; - if (author == person.value.content.about && !people[author]) { - people[author] = person.value; - } - } + const entries = msgs.map((x) => x.value); if (err) return reject(err); - return resolve(Object.values(people)); + return resolve(Object.values(entries)); }) ); }); @@ -124,7 +156,7 @@ const getAllEntries = (ssbServer) => pull( ssbServer.query.read({ reverse: true, - limit: 100, + limit: 500, }), pull.collect((err, msgs) => { const entries = msgs.map((x) => x.value); diff --git a/app/views/index.ejs b/app/views/index.ejs index 3decd6f..2cef2b7 100644 --- a/app/views/index.ejs +++ b/app/views/index.ejs @@ -6,7 +6,7 @@ <% posts.map(entry => { %> -
<%= entry.authorName %>: <%= entry.content.text %>
+
<%= entry.authorName %> (<%= entry.author.slice(0, 8) %>): <%= entry.content.text %>

<% }) %>