render.jsView |
---|
21 | 21 … | } |
22 | 22 … | |
23 | 23 … | module.exports.render = function (msg) { |
24 | 24 … | |
25 | | - var message = h('div.message#' + msg.key.substring(0, 44)) |
26 | | - |
27 | | - var messageContent = h('div.messageContent') |
28 | | - message.appendChild(messageContent) |
29 | | - |
30 | | - pull( |
31 | | - sbot.backlinks({ |
32 | | - query: [{$filter: {dest: msg.key}}], |
33 | | - live: true, |
34 | | - reverse: false, |
35 | | - index: 'DTA' |
36 | | - }), |
37 | | - pull.drain(function (data) { |
38 | | - if (data.sync) { |
39 | | - console.log('waiting') |
40 | | - } else { |
41 | | - var dataId = 'NOTNULL' |
42 | | - var dataId = document.getElementById(data.key.substring(0, 44)) |
43 | 25 … | |
44 | | - if (dataId == null) { |
45 | | - console.log('rendering message') |
46 | | - if ( |
47 | | - (data.value.content.vote) || |
48 | | - (msg.key == data.value.content.root) || |
49 | | - (msg.key == data.value.content.repo) || |
50 | | - (msg.key == data.value.content.link) |
51 | | - ) { |
52 | | - message.appendChild(h('div.submessage', (exports.render(data)))) |
53 | | - } else if (!data.value.content.root) { |
54 | | - var link = h('span', ' backlinked from ', tools.messageLink(data.key)) |
55 | | - message.appendChild(h('div.submessage', h('div.messageContent', tools.mini(data, link)))) |
56 | | - } else { |
57 | | - |
58 | | - message.appendChild(h('div.submessage', (exports.render(data)))) |
| 26 … | + var messageExists = (document.getElementById(msg.key.substring(0, 44)) !== null); |
| 27 … | + |
| 28 … | + if (!messageExists) { |
| 29 … | + var message = h('div.message#' + msg.key.substring(0, 44)) |
| 30 … | + |
| 31 … | + var messageContent = h('div.messageContent') |
| 32 … | + message.appendChild(messageContent) |
| 33 … | + |
| 34 … | + pull( |
| 35 … | + sbot.backlinks({ |
| 36 … | + query: [{$filter: {dest: msg.key}}], |
| 37 … | + live: true, |
| 38 … | + reverse: false, |
| 39 … | + index: 'DTA' |
| 40 … | + }), |
| 41 … | + pull.drain(function (data) { |
| 42 … | + if (data.sync) { |
| 43 … | + } else { |
| 44 … | + var subMessageExists = (document.getElementById(data.key.substring(0, 44)) !== null) |
| 45 … | + |
| 46 … | + if (!subMessageExists) { |
| 47 … | + |
| 48 … | + if (data.value.content.type == 'vote') { |
| 49 … | + if (msg.key == data.value.content.vote.link) { |
| 50 … | + console.log(data) |
| 51 … | + if (data.value.content.vote.value == 1) |
| 52 … | + var link = h('span', ' ', h('img.emoji', {src: config.emojiUrl + 'star.png'}), ' ', h('a', {href: '#' + data.value.content.vote.link}, tools.messageLink(data.value.content.vote.link))) |
| 53 … | + if (data.value.author == id) { |
| 54 … | + var gotIt = document.getElementById('votebutton:' + msg.key.substring(0,44)) |
| 55 … | + if (gotIt != null) { |
| 56 … | + gotIt.parentNode.appendChild(tools.unstar(msg)) |
| 57 … | + gotIt.removeChild(gotIt.firstChild) |
| 58 … | + |
| 59 … | + } |
| 60 … | + } |
| 61 … | + else if (data.value.content.vote.value == -1) |
| 62 … | + var link = h('span', ' ', h('img.emoji', {src: config.emojiUrl + 'stars.png'}), ' ', h('a', {href: '#' + data.value.content.vote.link}, tools.messageLink(data.value.content.vote.link))) |
| 63 … | + message.appendChild(h('div.submessage', h('div.messageContent', tools.mini(data, link)))) |
| 64 … | + } else { |
| 65 … | + |
| 66 … | + } |
| 67 … | + } else if (data.value.content.type == 'post') { |
| 68 … | + if ( |
| 69 … | + (msg.key == data.value.content.root) || |
| 70 … | + (msg.value.content.root == data.value.content.root) |
| 71 … | + ) { |
| 72 … | + message.appendChild(h('div.submessage', (exports.render(data)))) |
| 73 … | + } |
| 74 … | + } else { |
| 75 … | + var link = h('span', ' backlinked from ', tools.messageLink(data.key)) |
| 76 … | + message.appendChild(h('div.submessage', h('div.messageContent', tools.mini(data, link)))) |
| 77 … | + } |
| 78 … | + } else { |
59 | 79 … | } |
60 | | - } else { console.log('message already rendered')} |
| 80 … | + } |
| 81 … | + }) |
| 82 … | + ) |
| 83 … | + |
| 84 … | + if (msg.value.content.type == 'post') { |
| 85 … | + |
| 86 … | + messageContent.appendChild(tools.header(msg)) |
| 87 … | + |
| 88 … | + if (msg.value.content.root) { |
| 89 … | + messageContent.appendChild(h('span', 're: ', tools.messageLink(msg.value.content.root))) |
61 | 90 … | } |
62 | | - }) |
63 | | - ) |
64 | | - |
65 | | - if (msg.value.content.type == 'post') { |
66 | 91 … | |
67 | | - messageContent.appendChild(tools.header(msg)) |
68 | | - |
69 | | - if (msg.value.content.root) { |
70 | | - messageContent.appendChild(h('span', 're: ', tools.messageLink(msg.value.content.root))) |
71 | | - } |
| 92 … | + messageContent.appendChild(h('div.message__body', tools.markdown(msg.value.content.text))) |
72 | 93 … | |
73 | | - messageContent.appendChild(h('div.message__body', tools.markdown(msg.value.content.text))) |
74 | | - return message |
75 | | - } |
| 94 … | + var buttons = h('div.buttons') |
76 | 95 … | |
77 | | - if (msg.value.content.type == 'vote') { |
78 | | - if (msg.value.content.vote.value == 1) |
79 | | - var link = h('span', ' ', h('img.emoji', {src: config.emojiUrl + 'star.png'}), ' ', h('a', {href: '#' + msg.value.content.vote.link}, tools.messageLink(msg.value.content.vote.link))) |
80 | | - else if (msg.value.content.vote.value == -1) |
81 | | - var link = h('span', ' ', h('img.emoji', {src: config.emojiUrl + 'stars.png'}), ' ', h('a', {href: '#' + msg.value.content.vote.link}, tools.messageLink(msg.value.content.vote.link))) |
82 | | - messageContent.appendChild(tools.mini(msg, link)) |
83 | | - return message |
84 | | - } |
| 96 … | + buttons.appendChild(tools.star(msg)) |
85 | 97 … | |
86 | | - if (msg.value.content.type == 'about') { |
87 | | - if (msg.value.content.image) { |
88 | | - var image = h('span.avatar--small', |
89 | | - ' identified ', |
90 | | - h('a', {href: '#' + msg.value.content.about}, avatar.cachedName(msg.value.content.about)), |
91 | | - ' as ', |
92 | | - h('img', {src: config.blobsUrl + msg.value.content.image.link}) |
93 | | - ) |
94 | | - messageContent.appendChild(tools.mini(msg, image)) |
| 98 … | + messageContent.appendChild(buttons) |
| 99 … | + return message |
| 100 … | + } |
| 101 … | + |
| 102 … | + if (msg.value.content.type == 'vote') { |
| 103 … | + if (msg.value.content.vote.value == 1) |
| 104 … | + var link = h('span', ' ', h('img.emoji', {src: config.emojiUrl + 'star.png'}), ' ', h('a', {href: '#' + msg.value.content.vote.link}, tools.messageLink(msg.value.content.vote.link))) |
| 105 … | + else if (msg.value.content.vote.value == -1) |
| 106 … | + var link = h('span', ' ', h('img.emoji', {src: config.emojiUrl + 'stars.png'}), ' ', h('a', {href: '#' + msg.value.content.vote.link}, tools.messageLink(msg.value.content.vote.link))) |
| 107 … | + messageContent.appendChild(tools.mini(msg, link)) |
95 | 108 … | return message |
96 | 109 … | } |
97 | | - if (msg.value.content.name) { |
98 | | - var name = h('span', |
99 | | - ' identified ', |
100 | | - h('a', {href: '#' + msg.value.content.about}, avatar.cachedName(msg.value.content.about)), |
101 | | - ' as ', msg.value.content.name |
| 110 … | + |
| 111 … | + if (msg.value.content.type == 'about') { |
| 112 … | + if (msg.value.content.image) { |
| 113 … | + var image = h('span.avatar--small', |
| 114 … | + ' identified ', |
| 115 … | + h('a', {href: '#' + msg.value.content.about}, avatar.cachedName(msg.value.content.about)), |
| 116 … | + ' as ', |
| 117 … | + h('img', {src: config.blobsUrl + msg.value.content.image.link}) |
102 | 118 … | ) |
103 | | - messageContent.appendChild(tools.mini(msg, name)) |
104 | | - return message |
| 119 … | + messageContent.appendChild(tools.mini(msg, image)) |
| 120 … | + return message |
| 121 … | + } |
| 122 … | + if (msg.value.content.name) { |
| 123 … | + var name = h('span', |
| 124 … | + ' identified ', |
| 125 … | + h('a', {href: '#' + msg.value.content.about}, avatar.cachedName(msg.value.content.about)), |
| 126 … | + ' as ', msg.value.content.name |
| 127 … | + ) |
| 128 … | + messageContent.appendChild(tools.mini(msg, name)) |
| 129 … | + return message |
| 130 … | + } |
105 | 131 … | } |
106 | | - } |
107 | 132 … | |
108 | | - if (msg.value.content.type == 'label'){ |
109 | | - var content = h('span', ' labeled ', tools.messageLink(msg.value.content.link), ' as ', h('mark', h('a', {href: '#label/' + msg.value.content.label}, msg.value.content.label))) |
110 | | - messageContent.appendChild(tools.mini(msg, content)) |
111 | | - return message |
112 | | - } |
113 | | - |
114 | | - if (msg.value.content.type == 'queue') { |
115 | | - if (msg.value.content.queue == true) { |
116 | | - var content = h('span', ' added ', tools.messageLink(msg.value.content.message), ' to their ', h('a', {href: '#queue'}, 'queue')) |
| 133 … | + if (msg.value.content.type == 'label'){ |
| 134 … | + var content = h('span', ' labeled ', tools.messageLink(msg.value.content.link), ' as ', h('mark', h('a', {href: '#label/' + msg.value.content.label}, msg.value.content.label))) |
117 | 135 … | messageContent.appendChild(tools.mini(msg, content)) |
| 136 … | + return message |
118 | 137 … | } |
119 | | - if (msg.value.content.queue == false) { |
120 | | - var content = h('span', ' removed ', tools.messageLink(msg.value.content.message), ' from their ', h('a', {href: '#queue'}, 'queue')) |
121 | | - messageContent.appendChild(tools.mini(msg, content)) |
122 | 138 … | |
| 139 … | + if (msg.value.content.type == 'queue') { |
| 140 … | + if (msg.value.content.queue == true) { |
| 141 … | + var content = h('span', ' added ', tools.messageLink(msg.value.content.message), ' to their ', h('a', {href: '#queue'}, 'queue')) |
| 142 … | + messageContent.appendChild(tools.mini(msg, content)) |
| 143 … | + } |
| 144 … | + if (msg.value.content.queue == false) { |
| 145 … | + var content = h('span', ' removed ', tools.messageLink(msg.value.content.message), ' from their ', h('a', {href: '#queue'}, 'queue')) |
| 146 … | + messageContent.appendChild(tools.mini(msg, content)) |
| 147 … | + |
| 148 … | + } |
| 149 … | + return message |
123 | 150 … | } |
124 | | - return message |
125 | | - } |
126 | 151 … | |
127 | | - if (msg.value.content.type == 'scat_message') { |
128 | | - var src = hash() |
129 | | - if (src != 'backchannel') { |
130 | | - messageContent.appendChild(h('button.btn.right', h('a', {href: '#backchannel'}, 'Chat'))) |
| 152 … | + if (msg.value.content.type == 'scat_message') { |
| 153 … | + var src = hash() |
| 154 … | + if (src != 'backchannel') { |
| 155 … | + messageContent.appendChild(h('button.btn.right', h('a', {href: '#backchannel'}, 'Chat'))) |
| 156 … | + } |
| 157 … | + messageContent.appendChild(tools.mini(msg, ' ' + msg.value.content.text)) |
| 158 … | + return message |
131 | 159 … | } |
132 | | - messageContent.appendChild(tools.mini(msg, ' ' + msg.value.content.text)) |
133 | | - return message |
134 | | - } |
135 | 160 … | |
136 | | - else if (msg.value.content.type == 'contact') { |
137 | | - if (msg.value.content.contact) { |
138 | | - var contact = h('a', {href: '#' + msg.value.content.contact}, avatar.name(msg.value.content.contact)) |
139 | | - } else { var contact = h('p', 'no contact named')} |
| 161 … | + else if (msg.value.content.type == 'contact') { |
| 162 … | + if (msg.value.content.contact) { |
| 163 … | + var contact = h('a', {href: '#' + msg.value.content.contact}, avatar.name(msg.value.content.contact)) |
| 164 … | + } else { var contact = h('p', 'no contact named')} |
140 | 165 … | |
141 | | - if (msg.value.content.following == true) { |
142 | | - var following = h('span', ' follows ', contact) |
143 | | - messageContent.appendChild(tools.mini(msg, following)) |
| 166 … | + if (msg.value.content.following == true) { |
| 167 … | + var following = h('span', ' follows ', contact) |
| 168 … | + messageContent.appendChild(tools.mini(msg, following)) |
| 169 … | + } |
| 170 … | + if (msg.value.content.following == false) { |
| 171 … | + var unfollowing = h('span', ' unfollows ', contact) |
| 172 … | + messageContent.appendChild(tools.mini(msg, unfollowing)) |
| 173 … | + } |
| 174 … | + if (msg.value.content.blocking == true) { |
| 175 … | + var blocking = h('span', ' blocks ', contact) |
| 176 … | + messageContent.appendChild(tools.mini(msg, blocking)) |
| 177 … | + } |
| 178 … | + if (msg.value.content.blocking == false) { |
| 179 … | + var unblocking = h('span', ' unblocks ', contact) |
| 180 … | + messageContent.appendChild(tools.mini(msg, unblocking)) |
| 181 … | + } |
| 182 … | + return message |
| 183 … | + |
144 | 184 … | } |
145 | | - if (msg.value.content.following == false) { |
146 | | - var unfollowing = h('span', ' unfollows ', contact) |
147 | | - messageContent.appendChild(tools.mini(msg, unfollowing)) |
148 | | - } |
149 | | - if (msg.value.content.blocking == true) { |
150 | | - var blocking = h('span', ' blocks ', contact) |
151 | | - messageContent.appendChild(tools.mini(msg, blocking)) |
152 | | - } |
153 | | - if (msg.value.content.blocking == false) { |
154 | | - var unblocking = h('span', ' unblocks ', contact) |
155 | | - messageContent.appendChild(tools.mini(msg, unblocking)) |
156 | | - } |
157 | | - return message |
158 | 185 … | |
159 | | - } |
160 | 186 … | |
| 187 … | + if (msg.value.content.type == 'git-update') { |
161 | 188 … | |
162 | | - if (msg.value.content.type == 'git-update') { |
| 189 … | + messageContent.appendChild(tools.header(msg)) |
163 | 190 … | |
164 | | - messageContent.appendChild(tools.header(msg)) |
| 191 … | + var reponame = h('p', 'pushed to ', h('a', {href: '#' + msg.value.content.repo}, msg.value.content.repo)) |
165 | 192 … | |
166 | | - var reponame = h('p', 'pushed to ', h('a', {href: '#' + msg.value.content.repo}, msg.value.content.repo)) |
| 193 … | + var cloneurl = h('pre', 'git clone ssb://' + msg.value.content.repo) |
167 | 194 … | |
168 | | - var cloneurl = h('pre', 'git clone ssb://' + msg.value.content.repo) |
| 195 … | + messageContent.appendChild(reponame) |
169 | 196 … | |
170 | | - messageContent.appendChild(reponame) |
| 197 … | + ssbAvatar(sbot, id, msg.value.content.repo, function (err, data) { |
| 198 … | + if (data) { |
| 199 … | + var actualname = h('p', 'pushed to ', h('a', {href: '#' + msg.value.content.repo}, '%' + data.name)) |
| 200 … | + reponame.parentNode.replaceChild(actualname, reponame) |
| 201 … | + } |
| 202 … | + }) |
171 | 203 … | |
172 | | - ssbAvatar(sbot, id, msg.value.content.repo, function (err, data) { |
173 | | - if (data) { |
174 | | - var actualname = h('p', 'pushed to ', h('a', {href: '#' + msg.value.content.repo}, '%' + data.name)) |
175 | | - reponame.parentNode.replaceChild(actualname, reponame) |
| 204 … | + messageContent.appendChild(cloneurl) |
| 205 … | + |
| 206 … | + var commits = h('ul') |
| 207 … | + if (msg.value.content.commits) { |
| 208 … | + msg.value.content.commits.map(function (commit) { |
| 209 … | + commits.appendChild(h('li', h('code', commit.sha1), ' - ', commit.title)) |
| 210 … | + }) |
176 | 211 … | } |
177 | | - }) |
178 | 212 … | |
179 | | - messageContent.appendChild(cloneurl) |
| 213 … | + messageContent.appendChild(commits) |
180 | 214 … | |
181 | | - var commits = h('ul') |
182 | | - if (msg.value.content.commits) { |
183 | | - msg.value.content.commits.map(function (commit) { |
184 | | - commits.appendChild(h('li', h('code', commit.sha1), ' - ', commit.title)) |
185 | | - }) |
| 215 … | + return message |
186 | 216 … | } |
187 | 217 … | |
188 | | - messageContent.appendChild(commits) |
| 218 … | + if (msg.value.content.type == 'git-repo') { |
| 219 … | + messageContent.appendChild(tools.header(msg)) |
189 | 220 … | |
190 | | - return message |
191 | | - } |
| 221 … | + var reponame = h('p', 'git-ssb repo ', h('a', {href: '#' + msg.key}, msg.key)) |
192 | 222 … | |
193 | | - if (msg.value.content.type == 'git-repo') { |
194 | | - messageContent.appendChild(tools.header(msg)) |
| 223 … | + messageContent.appendChild(reponame) |
195 | 224 … | |
196 | | - var reponame = h('p', 'git-ssb repo ', h('a', {href: '#' + msg.key}, msg.key)) |
| 225 … | + ssbAvatar(sbot, id, msg.key, function (err, data) { |
| 226 … | + if (data) |
| 227 … | + var actualname = h('p', 'git-ssb repo ', h('a', {href: '#' + msg.key}, '%' + data.name)) |
| 228 … | + reponame.parentNode.replaceChild(actualname, reponame) |
| 229 … | + }) |
197 | 230 … | |
198 | | - messageContent.appendChild(reponame) |
| 231 … | + var cloneurl = h('pre', 'git clone ssb://' + msg.key) |
| 232 … | + messageContent.appendChild(cloneurl) |
| 233 … | + return message |
| 234 … | + } |
199 | 235 … | |
200 | | - ssbAvatar(sbot, id, msg.key, function (err, data) { |
201 | | - if (data) |
202 | | - var actualname = h('p', 'git-ssb repo ', h('a', {href: '#' + msg.key}, '%' + data.name)) |
203 | | - reponame.parentNode.replaceChild(actualname, reponame) |
204 | | - }) |
| 236 … | + if (typeof msg.value.content === 'string') { |
| 237 … | + var unboxed = ssbKeys.unbox(msg.value.content, keys) |
| 238 … | + if (unboxed) { |
| 239 … | + msg.value.content = unboxed |
| 240 … | + msg.value.private = true |
| 241 … | + return exports.render(msg) |
| 242 … | + } else { |
| 243 … | + var privateMsg = h('span', ' sent a private message.') |
| 244 … | + messageContent.appendChild(tools.mini(msg, privateMsg)) |
| 245 … | + return message |
| 246 … | + } |
| 247 … | + } |
205 | 248 … | |
206 | | - var cloneurl = h('pre', 'git clone ssb://' + msg.key) |
207 | | - messageContent.appendChild(cloneurl) |
208 | | - return message |
209 | | - } |
| 249 … | + else { |
| 250 … | + |
| 251 … | + |
| 252 … | + messageContent.appendChild(tools.header(msg)) |
| 253 … | + messageContent.appendChild(h('pre', tools.rawJSON(msg.value))) |
210 | 254 … | |
211 | | - if (typeof msg.value.content === 'string') { |
212 | | - var unboxed = ssbKeys.unbox(msg.value.content, keys) |
213 | | - if (unboxed) { |
214 | | - msg.value.content = unboxed |
215 | | - msg.value.private = true |
216 | | - return module.exports(msg) |
217 | | - } else { |
218 | | - var privateMsg = h('span', ' sent a private message.') |
219 | | - messageContent.appendChild(tools.mini(msg, privateMsg)) |
| 255 … | + |
| 256 … | + |
| 257 … | + |
220 | 258 … | return message |
221 | 259 … | } |
222 | 260 … | } |
223 | | - |
224 | | - else { |
225 | | - |
226 | | - |
227 | | - messageContent.appendChild(tools.header(msg)) |
228 | | - messageContent.appendChild(h('pre', tools.rawJSON(msg.value))) |
229 | | - |
230 | | - |
231 | | - |
232 | | - |
233 | | - return message |
234 | | - } |
235 | 261 … | } |