aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/about.js4
-rw-r--r--lib/render-msg.js48
2 files changed, 52 insertions, 0 deletions
diff --git a/lib/about.js b/lib/about.js
index 6d04355..29ec125 100644
--- a/lib/about.js
+++ b/lib/about.js
@@ -93,6 +93,10 @@ About.prototype.get = function (dest, cb) {
var author = msg.value.author
var c = msg.value.content
if (!c) return
+ if (msg.key === dest && c.type === 'about') {
+ // don't describe an about message with itself
+ return
+ }
var about = aboutByFeed[author] || (aboutByFeed[author] = {})
if (c.name) about.name = c.name
if (c.title) about.title = c.title
diff --git a/lib/render-msg.js b/lib/render-msg.js
index cda8eab..afbdc00 100644
--- a/lib/render-msg.js
+++ b/lib/render-msg.js
@@ -299,6 +299,7 @@ RenderMsg.prototype.message = function (cb) {
case 'position': if (this.c.version === 'v1') return this.pollPosition(cb)
case 'scat_message': return this.scat(cb)
case 'share': return this.share(cb)
+ case 'tag': return this.tag(cb)
default: return this.object(cb)
}
}
@@ -426,6 +427,8 @@ RenderMsg.prototype.title1 = function (cb) {
cb(null, self.c.name)
else if (self.c.type === 'talenet-idea-create')
self.app.getIdeaTitle(self.msg.key, cb)
+ else if (self.c.type === 'tag')
+ self.tagTitle(cb)
else
self.app.getAbout(self.msg.key, function (err, about) {
if (err) return cb(err)
@@ -1827,3 +1830,48 @@ RenderMsg.prototype.share = function (cb) {
], cb)
})
}
+
+RenderMsg.prototype.tag = function (cb) {
+ var done = multicb({pluck: 1, spread: true})
+ var self = this
+ if (self.c.message || self.c.root) {
+ self.link(self.c.root, done())
+ self.link(self.c.message, done())
+ self.links(self.c.branch, done())
+ done(function (err, rootLink, msgLink, branchLinks) {
+ if (err) return self.wrap(u.renderError(err), cb)
+ return self.wrap(h('div',
+ branchLinks.map(function (a, i) {
+ return h('div', h('small', h('span.symbol', '  ↳'), ' ', a))
+ }),
+ h('p',
+ self.c.tagged ? 'tagged ' : 'untagged ',
+ msgLink,
+ rootLink ? [' as ', rootLink] : ''
+ ),
+ ), cb)
+ })
+ } else {
+ self.wrapMini('tag', cb)
+ }
+}
+
+RenderMsg.prototype.tagTitle = function (cb) {
+ var self = this
+ if (!self.c.message && !self.c.root) {
+ return self.app.getAbout(self.msg.key, function (err, about) {
+ if (err) return cb(err)
+ var name = about.name || about.title
+ || (about.description && mdInline(about.description))
+ cb(null, truncate(name ? name.replace(/^%/, '') : self.msg.key, 72))
+ })
+ }
+ var done = multicb({pluck: 1, spread: true})
+ self.getName(self.c.root, done())
+ self.getName(self.c.message, done())
+ done(function (err, rootName, msgName) {
+ if (err) return cb(null, err.stack)
+ cb(null, (self.c.tagged ? 'tagged ' : 'untagged ')
+ + msgName + ' as ' + rootName)
+ })
+}