aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519>2017-05-09 15:17:00 -1000
committercel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519>2017-05-09 20:14:04 -1000
commit16a3027dc258d934ce38f4ab143c41246a5c1862 (patch)
tree5f45bdaef51ee6da9362b97283e21cb1c46a957c
parent29f56c3e49c767f75164f57ccd1ac52b389794c0 (diff)
downloadpatchfoo-16a3027dc258d934ce38f4ab143c41246a5c1862.tar.gz
patchfoo-16a3027dc258d934ce38f4ab143c41246a5c1862.zip
Add another way to lookup names
-rw-r--r--lib/render.js33
-rw-r--r--lib/serve.js46
2 files changed, 50 insertions, 29 deletions
diff --git a/lib/render.js b/lib/render.js
index aa2a6da..ea94329 100644
--- a/lib/render.js
+++ b/lib/render.js
@@ -257,3 +257,36 @@ Render.prototype.renderFeeds = function (opts) {
self.renderMsg(msg, opts, cb)
}, 4)
}
+
+Render.prototype.getName = function (id, cb) {
+ // TODO: consolidate the get name/link functions
+ var self = this
+ switch (id && id[0]) {
+ case '%':
+ return self.app.getMsgDecrypted(id, function (err, msg) {
+ if (err && err.name == 'NotFoundError')
+ return cb(null, String(id).substring(0, 8) + '…(missing)')
+ if (err) return fallback()
+ new RenderMsg(self, self.app, msg, {wrap: false}).title(cb)
+ })
+ case '@': // fallthrough
+ case '&':
+ return self.app.getAbout(id, function (err, about) {
+ if (err || !about || !about.name) return fallback()
+ cb(null, about.name)
+ })
+ default:
+ return cb(null, String(id))
+ }
+ function fallback() {
+ cb(null, String(id).substr(0, 8) + '…')
+ }
+}
+
+Render.prototype.getNameLink = function (id, cb) {
+ var self = this
+ self.getName(id, function (err, name) {
+ if (err) return cb(err)
+ cb(null, h('a', {href: self.toUrl(id)}, name))
+ })
+}
diff --git a/lib/serve.js b/lib/serve.js
index defac87..002c520 100644
--- a/lib/serve.js
+++ b/lib/serve.js
@@ -583,18 +583,10 @@ Serve.prototype.contacts = function (path) {
)
}
- function idLink(id) {
- return pull(
- pull.once(id),
- pull.asyncMap(self.renderIdLink.bind(self)),
- pull.map(u.toHTML)
- )
- }
-
pull(
cat([
ph('section', {}, [
- ph('h3', {}, ['Contacts: ', idLink(id)]),
+ ph('h3', {}, ['Contacts: ', self.pullIdLink(id)]),
ph('h4', {}, 'Friends'),
renderFriendsList()(contacts.friends),
ph('h4', {}, 'Follows'),
@@ -1028,25 +1020,18 @@ Serve.prototype.wrapPage = function (title, searchQ) {
)
}
-Serve.prototype.renderIdLink = function (id, cb) {
- var render = this.app.render
- var el = render.idLink(id, function (err) {
- if (err || !el) {
- el = h('a', {href: render.toUrl(id)}, id)
- }
- cb(null, el)
- })
+Serve.prototype.pullIdLink = function (id) {
+ return pull(
+ pull.once(id),
+ this.renderIdsList()
+ )
}
Serve.prototype.friends = function (path) {
var self = this
pull(
self.app.sbot.friends.createFriendStream({hops: 1}),
- self.renderFriends(),
- pull.map(function (el) {
- return [el, ' ']
- }),
- pull.map(u.toHTML),
+ self.renderIdsList(),
u.hyperwrap(function (items, cb) {
cb(null, [
h('section',
@@ -1062,14 +1047,17 @@ Serve.prototype.friends = function (path) {
)
}
-Serve.prototype.renderFriends = function () {
+Serve.prototype.renderIdsList = function () {
var self = this
- return paramap(function (id, cb) {
- self.renderIdLink(id, function (err, el) {
- if (err) el = u.renderError(err, ext)
- cb(null, el)
- })
- }, 8)
+ return pull(
+ paramap(function (id, cb) {
+ self.app.render.getNameLink(id, cb)
+ }, 8),
+ pull.map(function (el) {
+ return [el, ' ']
+ }),
+ pull.map(u.toHTML)
+ )
}
var relationships = [