diff --git a/app/lib/express.js b/app/lib/express.js index db5248a..ea395b6 100644 --- a/app/lib/express.js +++ b/app/lib/express.js @@ -5,7 +5,7 @@ const bodyParser = require("body-parser"); const Client = require("ssb-client"); const ssbKeys = require("ssb-keys"); const ssbConfig = require("./ssb-config"); -const { promisify, asyncRouter } = require("./utils"); +const { asyncRouter } = require("./utils"); const queries = require("./queries"); const serveBlobs = require("./serve-blobs"); @@ -19,7 +19,7 @@ let ssbSecret = ssbKeys.loadOrCreateSync( ); Client(ssbSecret, ssbConfig, async (err, server) => { if (err) throw err; - const whoami = await promisify(server.whoami); + const whoami = await server.whoami(); context.profile = await queries.getProfile(server, whoami.id); ssbServer = server; @@ -90,7 +90,7 @@ router.get("/profile/:id", async (req, res) => { }); router.post("/publish", async (req, res) => { - await promisify(ssbServer.publish, { + await ssbServer.publish({ type: "post", text: req.body.message, root: context.profile.id, @@ -102,7 +102,7 @@ router.post("/publish", async (req, res) => { router.post("/profile/:id/publish", async (req, res) => { const id = req.params.id; - await promisify(ssbServer.publish, { + await ssbServer.publish({ type: "post", text: req.body.message, root: id, @@ -112,8 +112,8 @@ router.post("/profile/:id/publish", async (req, res) => { }); router.get("/pubs", async (_req, res) => { - const invite = await promisify(ssbServer.invite.create, { uses: 10 }); - const peers = await promisify(ssbServer.gossip.peers); + const invite = await ssbServer.invite.create({ uses: 10 }); + const peers = await ssbServer.gossip.peers(); res.render("pubs", { invite, peers }); }); @@ -121,7 +121,7 @@ router.get("/pubs", async (_req, res) => { router.post("/pubs/add", async (req, res) => { const inviteCode = req.body.invite_code; - await promisify(ssbServer.invite.accept, inviteCode); + await ssbServer.invite.accept(inviteCode); res.redirect("/"); }); @@ -134,7 +134,7 @@ router.post("/about", async (req, res) => { const name = req.body.name; if (name != context.profile.name) { - await promisify(ssbServer.publish, { + await ssbServer.publish({ type: "about", about: context.profile.id, name: name, diff --git a/app/lib/queries.js b/app/lib/queries.js index 7492d69..3e27bed 100644 --- a/app/lib/queries.js +++ b/app/lib/queries.js @@ -1,48 +1,51 @@ -const { promisify } = require("./utils"); const pull = require("pull-stream"); const cat = require("pull-cat"); const debug = require("debug")("queries"); const paramap = require("pull-paramap"); -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 }, +const latestOwnerValue = (ssbServer, { key, dest }) => + new Promise((resolve, reject) => { + 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]; }, - ], - }), - 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); - if (!value) { - ssbServer.about.latestValue({ key, dest }, cb); - } else { - cb(null, value); + (err) => { + if (err) return reject(err); + if (!value) { + ssbServer.about + .latestValue({ key, dest }) + .then(resolve) + .catch(reject); + } else { + resolve(value); + } } - } - ) - ); -}; + ) + ); + }); const mapProfiles = (ssbServer) => (data, callback) => { const authorPromise = getProfile(ssbServer, data.value.author); @@ -211,8 +214,7 @@ let profileCache = {}; const getProfile = async (ssbServer, id) => { if (profileCache[id]) return profileCache[id]; - let getKey = (key) => - promisify(latestOwnerValue(ssbServer), { key, dest: id }); + let getKey = (key) => latestOwnerValue(ssbServer, { key, dest: id }); let [name, image, description] = await Promise.all([ getKey("name"), diff --git a/app/public/style.css b/app/public/style.css index 5726d46..103ad85 100644 --- a/app/public/style.css +++ b/app/public/style.css @@ -66,7 +66,7 @@ h1 { text-transform: uppercase; font-weight: bold; line-height: 1.3em; - margin: 0; + margin: 10px 0 0 0; } .wall { @@ -105,5 +105,4 @@ h1 { .profile-pic { width: 300px; - padding-bottom: 10px; }