Commit b2c03954f07ab2baee3e4a7390bb6bcffe2c6df3
Merge: add thread links to posts that have a root
And don't render them when rendering the threadEv Bogue authored on 6/24/2017, 8:44:46 PM
Anders Rune Jensen committed on 6/25/2017, 8:18:50 PM
Parent: 336a39d74fbef28c1b1f707863fb872bcc447a6c
Files changed
index.js | changed |
render.js | changed |
index.js | ||
---|---|---|
@@ -209,9 +209,9 @@ | ||
209 | 209 … | pull( |
210 | 210 … | pull.values(logs), |
211 | 211 … | paramap(addAuthorAbout, 8), |
212 | 212 … | paramap(addVoteMessage, 8), |
213 | - pull(renderThread(defaultOpts, | |
213 … | + pull(renderThread(defaultOpts, '', | |
214 | 214 … | renderShowAll(showAll, req.url)), |
215 | 215 … | wrapPage('#' + channelId)), |
216 | 216 … | toPull(res, function (err) { |
217 | 217 … | if (err) console.error('[viewer]', err) |
render.js | ||
---|---|---|
@@ -74,9 +74,9 @@ | ||
74 | 74 … | |
75 | 75 … | function formatMsgs(id, ext, opts) { |
76 | 76 … | switch (ext || "html") { |
77 | 77 … | case "html": |
78 | - return pull(renderThread(opts), wrapPage(id)); | |
78 … | + return pull(renderThread(opts, id, ''), wrapPage(id)); | |
79 | 79 … | case "js": |
80 | 80 … | return pull(renderThread(opts), wrapJSEmbed(opts)); |
81 | 81 … | case "json": |
82 | 82 … | return wrapJSON(); |
@@ -109,9 +109,9 @@ | ||
109 | 109 … | figCaption.innerHTML = 'Feed of ' + about.name + '<br>' + |
110 | 110 … | (about.description != undefined ? |
111 | 111 … | marked(about.description, opts.marked) : ''); |
112 | 112 … | return pull( |
113 | - pull.map(renderMsg.bind(this, opts)), | |
113 … | + pull.map(renderMsg.bind(this, opts, '')), | |
114 | 114 … | wrap(toolTipTop() + '<main>' + |
115 | 115 … | h('article', |
116 | 116 … | h('header', |
117 | 117 … | h('figure', |
@@ -125,11 +125,11 @@ | ||
125 | 125 … | showAllHTML + '</main>' + callToAction()) |
126 | 126 … | ); |
127 | 127 … | } |
128 | 128 … | |
129 | -function renderThread(opts, showAllHTML = "") { | |
129 … | +function renderThread(opts, id, showAllHTML = "") { | |
130 | 130 … | return pull( |
131 | - pull.map(renderMsg.bind(this, opts)), | |
131 … | + pull.map(renderMsg.bind(this, opts, id)), | |
132 | 132 … | wrap(toolTipTop() + '<main>', |
133 | 133 … | showAllHTML + '</main>' + callToAction()) |
134 | 134 … | ); |
135 | 135 … | } |
@@ -310,9 +310,9 @@ | ||
310 | 310 … | function docWrite(str) { |
311 | 311 … | return "document.write(" + JSON.stringify(str) + ")\n"; |
312 | 312 … | } |
313 | 313 … | |
314 | -function renderMsg(opts, msg) { | |
314 … | +function renderMsg(opts, id, msg) { | |
315 | 315 … | var c = msg.value.content || {}; |
316 | 316 … | var name = encodeURIComponent(msg.key); |
317 | 317 … | return h('article#' + name, |
318 | 318 … | h('header', |
@@ -324,9 +324,9 @@ | ||
324 | 324 … | h('a.ssb-avatar-name', |
325 | 325 … | { href: opts.base + escape(msg.value.author) }, |
326 | 326 … | msg.author.name), |
327 | 327 … | msgTimestamp(msg, opts.base + name)))), |
328 | - render(opts, c)).outerHTML; | |
328 … | + render(opts, id, c)).outerHTML; | |
329 | 329 … | } |
330 | 330 … | |
331 | 331 … | function msgTimestamp(msg, link) { |
332 | 332 … | var date = new Date(msg.value.timestamp); |
@@ -342,18 +342,18 @@ | ||
342 | 342 … | function formatDate(date) { |
343 | 343 … | return htime(date); |
344 | 344 … | } |
345 | 345 … | |
346 | -function render(opts, c) { | |
346 … | +function render(opts, id, c) { | |
347 | 347 … | var base = opts.base; |
348 | 348 … | if (c.type === "post") { |
349 | 349 … | var channel = c.channel |
350 | 350 … | ? h('div.top-right', |
351 | 351 … | h('a', |
352 | 352 … | { href: base + 'channel/' + c.channel }, |
353 | 353 … | '#' + c.channel)) |
354 | 354 … | : ""; |
355 | - return [channel, renderPost(opts, c)]; | |
355 … | + return [channel, renderPost(opts, id, c)]; | |
356 | 356 … | } else if (c.type == "vote" && c.vote.expression == "Dig") { |
357 | 357 … | var channel = c.channel |
358 | 358 … | ? [' in ', |
359 | 359 … | h('a', |
@@ -398,9 +398,9 @@ | ||
398 | 398 … | else if (c.type == "issue") { |
399 | 399 … | return [h('span.status', |
400 | 400 … | "Created a git issue" + |
401 | 401 … | (c.repoName != undefined ? " in repo " + c.repoName : ""), |
402 | - renderPost(opts, c))]; | |
402 … | + renderPost(opts, id, c))]; | |
403 | 403 … | } |
404 | 404 … | else if (c.type == "git-repo") { |
405 | 405 … | return h('span.status', |
406 | 406 … | "Created a git repo " + c.name); |
@@ -434,18 +434,23 @@ | ||
434 | 434 … | '#' + c.channel)) |
435 | 435 … | else return renderDefault(c); |
436 | 436 … | } |
437 | 437 … | |
438 | -function renderPost(opts, c) { | |
438 … | +function renderPost(opts, id, c) { | |
439 | 439 … | opts.mentions = {}; |
440 | 440 … | if (Array.isArray(c.mentions)) { |
441 | 441 … | c.mentions.forEach(function (link) { |
442 | 442 … | if (link && link.name && link.link) |
443 | 443 … | opts.mentions[link.name] = link.link; |
444 | 444 … | }); |
445 | 445 … | } |
446 | 446 … | var s = h('section'); |
447 | - s.innerHTML = marked(String(c.text), opts.marked); | |
447 … | + var content = ''; | |
448 … | + if (c.root && c.root != id) | |
449 … | + content += 'Re: ' + h('a', | |
450 … | + { href: '/' + encodeURIComponent(c.root) }, | |
451 … | + c.root.substring(0, 10)).outerHTML + '<br>'; | |
452 … | + s.innerHTML = content + marked(String(c.text), opts.marked); | |
448 | 453 … | return s; |
449 | 454 … | } |
450 | 455 … | |
451 | 456 … | function renderDefault(c) { |
Built with git-ssb-web