diff --git a/index.js b/index.js index bb9a1b2..88cf67e 100644 --- a/index.js +++ b/index.js @@ -11,15 +11,15 @@ var memo = require('asyncmemo') var lru = require('lrucache') var serveEmoji = require('emoji-server')() var { - MdRenderer, - renderEmoji, - formatMsgs, - wrapPage, - renderThread, - renderAbout, - renderShowAll, - renderRssItem, - wrapRss, + MdRenderer, + renderEmoji, + formatMsgs, + wrapPage, + renderThread, + renderAbout, + renderShowAll, + renderRssItem, + wrapRss, } = require('./render'); var appHash = hash([fs.readFileSync(__filename)]) @@ -52,16 +52,16 @@ exports.init = function (sbot, config) { } defaultOpts.marked = { - gfm: true, - mentions: true, - tables: true, - breaks: true, - pedantic: false, - sanitize: true, - smartLists: true, - smartypants: false, - emoji: renderEmoji, - renderer: new MdRenderer(defaultOpts) + gfm: true, + mentions: true, + tables: true, + breaks: true, + pedantic: false, + sanitize: true, + smartLists: true, + smartypants: false, + emoji: renderEmoji, + renderer: new MdRenderer(defaultOpts) } var getMsg = memo({cache: lru(100)}, getMsgWithValue, sbot) @@ -96,146 +96,146 @@ exports.init = function (sbot, config) { } function serveFeed(req, res, feedId, ext) { - console.log("serving feed: " + feedId) + console.log("serving feed: " + feedId) - var showAll = req.url.endsWith("?showAll"); + var showAll = req.url.endsWith("?showAll"); - getAbout(feedId, function (err, about) { + getAbout(feedId, function (err, about) { + if (err) return respond(res, 500, err.stack || err) + + function render() { + switch (ext) { + case 'rss': + return pull( + // formatMsgs(feedId, ext, defaultOpts) + renderRssItem(defaultOpts), wrapRss(about.name, defaultOpts) + ); + default: + return pull( + renderAbout(defaultOpts, about, + renderShowAll(showAll, req.url)), wrapPage(about.name) + ); + } + } + + pull( + sbot.createUserStream({ id: feedId, reverse: true, limit: showAll ? -1 : (ext == 'rss' ? 25 : 10) }), + pull.collect(function (err, logs) { if (err) return respond(res, 500, err.stack || err) - - function render() { - switch (ext) { - case 'rss': - return pull( - // formatMsgs(feedId, ext, defaultOpts) - renderRssItem(defaultOpts), wrapRss(about.name, defaultOpts) - ); - default: - return pull( - renderAbout(defaultOpts, about, - renderShowAll(showAll, req.url)), wrapPage(about.name) - ); - } - } - + res.writeHead(200, { + 'Content-Type': ctype(ext) + }) pull( - sbot.createUserStream({ id: feedId, reverse: true, limit: showAll ? -1 : (ext == 'rss' ? 25 :10) }), - pull.collect(function (err, logs) { - if (err) return respond(res, 500, err.stack || err) - res.writeHead(200, { - 'Content-Type': ctype(ext) - }) - pull( - pull.values(logs), - paramap(addAuthorAbout, 8), - paramap(addFollowAbout, 8), - paramap(addVoteMessage, 8), - paramap(addGitLinks, 8), - render(), - toPull(res, function (err) { - if (err) console.error('[viewer]', err) - }) - ) - }) + pull.values(logs), + paramap(addAuthorAbout, 8), + paramap(addFollowAbout, 8), + paramap(addVoteMessage, 8), + paramap(addGitLinks, 8), + render(), + toPull(res, function (err) { + if (err) console.error('[viewer]', err) + }) ) - }) + }) + ) + }) } function serveUserFeed(req, res, url) { - var feedId = url.substring(url.lastIndexOf('user-feed/')+10, 100) - console.log("serving user feed: " + feedId) + var feedId = url.substring(url.lastIndexOf('user-feed/')+10, 100) + console.log("serving user feed: " + feedId) - var following = [] - var channelSubscriptions = [] - - getAbout(feedId, function (err, about) { - pull( - sbot.createUserStream({ id: feedId }), - pull.filter((msg) => { - return !msg.value || - msg.value.content.type == 'contact' || - (msg.value.content.type == 'channel' && - typeof msg.value.content.subscribed != 'undefined') - }), - pull.collect(function (err, msgs) { - msgs.forEach((msg) => { - if (msg.value.content.type == 'contact') - { - if (msg.value.content.following) - following[msg.value.content.contact] = 1 - else - delete following[msg.value.content.contact] - } - else // channel subscription - { - if (msg.value.content.subscribed) - channelSubscriptions[msg.value.content.channel] = 1 - else - delete channelSubscriptions[msg.value.content.channel] - } - }) - - serveFeeds(req, res, following, channelSubscriptions, feedId, 'user feed ' + (about ? about.name : "")) - }) - ) - }) + var following = [] + var channelSubscriptions = [] + + getAbout(feedId, function (err, about) { + pull( + sbot.createUserStream({ id: feedId }), + pull.filter((msg) => { + return !msg.value || + msg.value.content.type == 'contact' || + (msg.value.content.type == 'channel' && + typeof msg.value.content.subscribed != 'undefined') + }), + pull.collect(function (err, msgs) { + msgs.forEach((msg) => { + if (msg.value.content.type == 'contact') + { + if (msg.value.content.following) + following[msg.value.content.contact] = 1 + else + delete following[msg.value.content.contact] + } + else // channel subscription + { + if (msg.value.content.subscribed) + channelSubscriptions[msg.value.content.channel] = 1 + else + delete channelSubscriptions[msg.value.content.channel] + } + }) + + serveFeeds(req, res, following, channelSubscriptions, feedId, 'user feed ' + (about ? about.name : "")) + }) + ) + }) } function serveFeeds(req, res, following, channelSubscriptions, feedId, name) { - pull( - sbot.createLogStream({ reverse: true, limit: 5000 }), - pull.filter((msg) => { - return !msg.value || - (msg.value.author in following || - msg.value.content.channel in channelSubscriptions) - }), - pull.take(150), - pull.collect(function (err, logs) { - if (err) return respond(res, 500, err.stack || err) - res.writeHead(200, { - 'Content-Type': ctype("html") - }) - pull( - pull.values(logs), - paramap(addAuthorAbout, 8), - paramap(addFollowAbout, 8), - paramap(addVoteMessage, 8), - paramap(addGitLinks, 8), - pull(renderThread(defaultOpts), wrapPage(name)), - toPull(res, function (err) { - if (err) console.error('[viewer]', err) - }) - ) + pull( + sbot.createLogStream({ reverse: true, limit: 5000 }), + pull.filter((msg) => { + return !msg.value || + (msg.value.author in following || + msg.value.content.channel in channelSubscriptions) + }), + pull.take(150), + pull.collect(function (err, logs) { + if (err) return respond(res, 500, err.stack || err) + res.writeHead(200, { + 'Content-Type': ctype("html") + }) + pull( + pull.values(logs), + paramap(addAuthorAbout, 8), + paramap(addFollowAbout, 8), + paramap(addVoteMessage, 8), + paramap(addGitLinks, 8), + pull(renderThread(defaultOpts), wrapPage(name)), + toPull(res, function (err) { + if (err) console.error('[viewer]', err) }) - ) + ) + }) + ) } function serveChannel(req, res, url) { - var channelId = url.substring(url.lastIndexOf('channel/')+8, 100) - console.log("serving channel: " + channelId) + var channelId = url.substring(url.lastIndexOf('channel/')+8, 100) + console.log("serving channel: " + channelId) - var showAll = req.url.endsWith("?showAll") - - pull( - sbot.query.read({ limit: showAll ? 300 : 10, reverse: true, query: [{$filter: { value: { content: { channel: channelId }}}}]}), - pull.collect(function (err, logs) { - if (err) return respond(res, 500, err.stack || err) - res.writeHead(200, { - 'Content-Type': ctype("html") - }) - pull( - pull.values(logs), - paramap(addAuthorAbout, 8), - paramap(addVoteMessage, 8), - pull(renderThread(defaultOpts, '', - renderShowAll(showAll, req.url)), - wrapPage('#' + channelId)), - toPull(res, function (err) { - if (err) console.error('[viewer]', err) - }) - ) + var showAll = req.url.endsWith("?showAll") + + pull( + sbot.query.read({ limit: showAll ? 300 : 10, reverse: true, query: [{$filter: { value: { content: { channel: channelId }}}}]}), + pull.collect(function (err, logs) { + if (err) return respond(res, 500, err.stack || err) + res.writeHead(200, { + 'Content-Type': ctype("html") + }) + pull( + pull.values(logs), + paramap(addAuthorAbout, 8), + paramap(addVoteMessage, 8), + pull(renderThread(defaultOpts, '', + renderShowAll(showAll, req.url)), + wrapPage('#' + channelId)), + toPull(res, function (err) { + if (err) console.error('[viewer]', err) }) - ) + ) + }) + ) } function serveId(req, res, id, ext, query) { @@ -297,25 +297,25 @@ exports.init = function (sbot, config) { } function addFollowAbout(msg, cb) { - if (msg.value.content.contact) - getAbout(msg.value.content.contact, function (err, about) { - if (err) return cb(err) - msg.value.content.contactAbout = about - cb(null, msg) - }) - else - cb(null, msg) + if (msg.value.content.contact) + getAbout(msg.value.content.contact, function (err, about) { + if (err) return cb(err) + msg.value.content.contactAbout = about + cb(null, msg) + }) + else + cb(null, msg) } function addVoteMessage(msg, cb) { - if (msg.value.content.type == 'vote' && msg.value.content.vote.link[0] == '%') - getMsg(msg.value.content.vote.link, function (err, linkedMsg) { - if (linkedMsg) - msg.value.content.vote.linkedText = linkedMsg.value.content.text - cb(null, msg) - }) - else - cb(null, msg) + if (msg.value.content.type == 'vote' && msg.value.content.vote.link[0] == '%') + getMsg(msg.value.content.vote.link, function (err, linkedMsg) { + if (linkedMsg) + msg.value.content.vote.linkedText = linkedMsg.value.content.text + cb(null, msg) + }) + else + cb(null, msg) } function addAuthorAbout(msg, cb) { @@ -327,20 +327,20 @@ exports.init = function (sbot, config) { } function addGitLinks(msg, cb) { - if (msg.value.content.type == 'git-update') - getMsg(msg.value.content.repo, function (err, gitRepo) { - if (gitRepo) - msg.value.content.repoName = gitRepo.value.content.name - cb(null, msg) - }) - else if (msg.value.content.type == 'issue') - getMsg(msg.value.content.project, function (err, gitRepo) { - if (gitRepo) - msg.value.content.repoName = gitRepo.value.content.name - cb(null, msg) - }) - else - cb(null, msg) + if (msg.value.content.type == 'git-update') + getMsg(msg.value.content.repo, function (err, gitRepo) { + if (gitRepo) + msg.value.content.repoName = gitRepo.value.content.name + cb(null, msg) + }) + else if (msg.value.content.type == 'issue') + getMsg(msg.value.content.project, function (err, gitRepo) { + if (gitRepo) + msg.value.content.repoName = gitRepo.value.content.name + cb(null, msg) + }) + else + cb(null, msg) } } diff --git a/render.js b/render.js index a6b4d87..d19fc32 100644 --- a/render.js +++ b/render.js @@ -515,8 +515,8 @@ function renderDefault(c) { } function renderShowAll(showAll, url) { - if (showAll) - return ''; - else - return '
' + h('a', { href : url + '?showAll' }, 'Show whole feed').outerHTML; + if (showAll) + return ''; + else + return '
' + h('a', { href : url + '?showAll' }, 'Show whole feed').outerHTML; }