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