render.jsView |
---|
1 | 1 … | var h = require('hyperscript') |
2 | | - |
3 | 2 … | var human = require('human-time') |
4 | 3 … | var ref = require('ssb-ref') |
5 | 4 … | var avatar = require('./avatar') |
6 | 5 … | |
7 | 6 … | var markdown = require('ssb-markdown') |
8 | 7 … | var config = require('./config')() |
9 | 8 … | |
10 | | -var render = require('./render') |
11 | | - |
12 | 9 … | function rawJSON (obj) { |
13 | 10 … | return JSON.stringify(obj, null, 2) |
14 | 11 … | .split(/([%@&][a-zA-Z0-9\/\+]{43}=*\.[\w]+)/) |
15 | 12 … | .map(function (e) { |
19 | 16 … | return e |
20 | 17 … | }) |
21 | 18 … | } |
22 | 19 … | |
| 20 … | +function header (msg) { |
| 21 … | + return h('div.header', |
| 22 … | + h('span.avatar', |
| 23 … | + h('a', {href: '#' + msg.value.author}, |
| 24 … | + h('span.avatar--small', avatar.image(msg.value.author)), |
| 25 … | + avatar.name(msg.value.author) |
| 26 … | + ) |
| 27 … | + ), |
| 28 … | + h('span.timestamp', h('a', {href: '#' + msg.key}, human(new Date(msg.value.timestamp)))), |
| 29 … | + ) |
| 30 … | +} |
| 31 … | + |
23 | 32 … | module.exports = function (msg) { |
| 33 … | + var message = h('div.message') |
| 34 … | + message.appendChild(header(msg)) |
| 35 … | + |
24 | 36 … | if (msg.value.content.type == 'post') { |
25 | | - return h('div.message', |
26 | | - h('span.avatar', |
27 | | - h('a', {href: '#' + msg.value.author}, |
28 | | - h('span.avatar--small', avatar.image(msg.value.author)), |
29 | | - avatar.name(msg.value.author) |
30 | | - ) |
31 | | - ), |
32 | | - h('span.timestamp', h('a', {href: '#' + msg.key}, human(new Date(msg.value.timestamp)))), |
33 | | - h('div.message__body', |
| 37 … | + message.appendChild(h('div.message__body', |
34 | 38 … | {innerHTML: markdown.block(msg.value.content.text, {toUrl: function (url, image) { |
35 | | - if(url[0] == '@') return '#' + url |
36 | | - if(url[0] == '%') return '#' + url |
| 39 … | + if(url[0] == '%' || url[0] == '@') return '#' + url |
37 | 40 … | if(!image) return url |
38 | 41 … | if(url[0] !== '&') return url |
39 | | - return config.blobsurl + url |
| 42 … | + return config.blobsUrl + url |
40 | 43 … | }})} |
41 | 44 … | ) |
42 | 45 … | ) |
| 46 … | + return message |
43 | 47 … | } else if (msg.value.content.type == 'vote') { |
44 | 48 … | var embed = msg.value.content.vote.link |
45 | 49 … | |
46 | 50 … | var embedded = h('div.embedded') |
47 | | - |
48 | 51 … | sbot.get(embed, function (err, msg) { |
49 | 52 … | if (err) {console.log('could not find message locally, try ooo?') } |
50 | | - console.log(msg) |
51 | 53 … | msg.value = msg |
52 | 54 … | msg.key = embed |
53 | 55 … | if (msg.value.content.text) { |
54 | | - embedded.appendChild( |
55 | | - h('div.message', |
56 | | - h('span.avatar', |
57 | | - h('a', {href: '#' + msg.value.author}, |
58 | | - h('span.avatar--small', avatar.image(msg.value.author)), |
59 | | - avatar.name(msg.value.author) |
60 | | - ) |
61 | | - ), |
62 | | - h('span.timestamp', h('a', {href: '#' + msg.key}, human(new Date(msg.value.timestamp)))), |
63 | | - h('div.message__body', |
64 | | - {innerHTML: markdown.block(msg.value.content.text, {toUrl: function (url, image) { |
65 | | - if(url[0] == '@') return '#' + url |
66 | | - if(url[0] == '%') return '#' + url |
67 | | - if(!image) return url |
68 | | - if(url[0] !== '&') return url |
69 | | - return config.blobsUrl + url |
70 | | - }})} |
71 | | - ) |
72 | | - ) |
73 | | - ) |
| 56 … | + message.appendChild(h('img.emoji', {src: config.emojiUrl + 'star.png'})) |
| 57 … | + message.appendChild(embedded) |
| 58 … | + embedded.appendChild(header(msg)) |
| 59 … | + embedded.appendChild(h('div.message__body', |
| 60 … | + {innerHTML: markdown.block(msg.value.content.text, {toUrl: function (url, image) { |
| 61 … | + if(url[0] == '@') return '#' + url |
| 62 … | + if(url[0] == '%') return '#' + url |
| 63 … | + if(!image) return url |
| 64 … | + if(url[0] !== '&') return url |
| 65 … | + return config.blobsUrl + url |
| 66 … | + }})} |
| 67 … | + )) |
74 | 68 … | } |
75 | 69 … | }) |
76 | | - return h('div.message', |
77 | | - h('span.avatar', |
78 | | - h('a', {href: '#' + msg.value.author}, |
79 | | - h('span.avatar--small', avatar.image(msg.value.author)), |
80 | | - avatar.name(msg.value.author) |
81 | | - ), h('img.emoji', {src: config.emojiUrl + 'star.png'}) |
82 | | - ), |
83 | | - h('span.timestamp', h('a', {href: '#' + msg.key}, human(new Date(msg.value.timestamp)))), |
84 | | - h('div.message__body', embedded) |
85 | | - ) |
| 70 … | + return message |
86 | 71 … | } else { |
87 | | - return h('div.message', |
88 | | - h('span.avatar', |
89 | | - h('a', {href: '#' + msg.value.author}, |
90 | | - h('span.avatar--small', avatar.image(msg.value.author)), |
91 | | - avatar.name(msg.value.author) |
92 | | - ) |
93 | | - ), |
94 | | - h('span.timestamp', h('a', {href: '#' + msg.key}, human(new Date(msg.value.timestamp)))), |
95 | | - h('pre', rawJSON(msg.value.content)) |
96 | | - ) |
| 72 … | + message.appendChild(h('pre', rawJSON(msg.value.content))) |
| 73 … | + return message |
97 | 74 … | } |
98 | 75 … | } |