Files: 92f21680230af434fa835cd7d38953a9e0320410 / render.js
3190 bytesRaw
1 | var h = require('hyperscript') |
2 | var config = require('./config')() |
3 | |
4 | var pull = require('pull-stream') |
5 | |
6 | var sbot = require('./scuttlebot') |
7 | var composer = require('./compose') |
8 | |
9 | var tools = require('./tools') |
10 | |
11 | var id = require('./keys').id |
12 | |
13 | module.exports = function (msg) { |
14 | var opts = {} |
15 | opts.root = null |
16 | var message = h('div.message') |
17 | |
18 | |
19 | if (msg.value.content.type == 'post') { |
20 | opts.type = 'post' |
21 | opts.branch = msg.key |
22 | |
23 | message.appendChild(tools.header(msg)) |
24 | |
25 | if (msg.value.content.root) { |
26 | message.appendChild(h('span', 're: ', tools.messageLink(msg.value.content.root))) |
27 | opts.root = msg.value.content.root |
28 | } else { opts.root = msg.key } |
29 | |
30 | |
31 | message.appendChild( |
32 | h('div.message__body', tools.markdown(msg.value.content.text)) |
33 | ) |
34 | |
35 | if (msg.value.author == id) { |
36 | opts.type = 'update' |
37 | opts.updated = msg.key |
38 | opts.messageText = msg.value.content.text |
39 | pull( |
40 | sbot.query({query: [{$filter: {value: {content: {type: 'update', updated: msg.key}}}}]}), |
41 | pull.drain(function (update) { |
42 | var latest = h('div.message__body', tools.markdown(update.value.content.text)) |
43 | message.replaceChild(latest, message.childNodes[2]) |
44 | opts.messageText = update.value.content.text |
45 | }) |
46 | |
47 | ) |
48 | |
49 | |
50 | if (msg.value.content.original) |
51 | opts.original = msg.value.content.original |
52 | else |
53 | opts.original = msg.key |
54 | message.appendChild(h('button.btn', 'Edit', { |
55 | onclick: function () { |
56 | var compose = h('div.message', composer(opts)) |
57 | message.parentNode.replaceChild(compose, message) |
58 | } |
59 | })) |
60 | } else { |
61 | opts.type = 'post' |
62 | opts.branch = msg.key |
63 | |
64 | pull( |
65 | sbot.query({query: [{$filter: {value: {content: {type: 'update', updated: msg.key}}}}]}), |
66 | pull.drain(function (data) { |
67 | console.log(data) |
68 | var latest = h('div.message__body', tools.markdown(data.value.content.text)) |
69 | message.replaceChild(latest, message.childNodes[2]) |
70 | }) |
71 | |
72 | ) |
73 | |
74 | |
75 | message.appendChild(h('button.btn', 'Reply', { |
76 | onclick: function () { |
77 | var compose = composer(opts) |
78 | message.replaceChild(compose, message.lastElementChild) |
79 | } |
80 | })) |
81 | } |
82 | return message |
83 | } else if (msg.value.content.type == 'vote') { |
84 | message.appendChild(tools.header(msg)) |
85 | var embed = msg.value.content.vote.link |
86 | |
87 | var embedded = h('div.embedded') |
88 | sbot.get(embed, function (err, msg) { |
89 | if (err) {console.log('could not find message locally, try ooo?') } |
90 | msg.value = msg |
91 | msg.key = embed |
92 | if (msg.value.content.text) { |
93 | message.appendChild(embedded) |
94 | embedded.appendChild(tools.header(msg)) |
95 | embedded.appendChild( |
96 | h('div.message__body', |
97 | tools.markdown(msg.value.content.text.substring(0, 256) + '...'), |
98 | h('span', '[', h('a', {href: '#' + msg.key}, 'Full Post'), ']') |
99 | ) |
100 | ) |
101 | } |
102 | }) |
103 | return message |
104 | } else { |
105 | message.appendChild(tools.header(msg)) |
106 | message.appendChild(h('pre', tools.rawJSON(msg.value.content))) |
107 | return message |
108 | //return |
109 | } |
110 | } |
111 |
Built with git-ssb-web