Commit 5e399826faea89305f911f9f2fb8a9509f9a0319
move timestamp to message author component, fix raw button
Michael Williams committed on 12/22/2016, 11:35:36 AMParent: e69d724b2b71385a2c73b9539acf9aee8dc0926b
Files changed
modules_basic/message-header.js | changed |
modules_basic/message.js | changed |
modules_basic/timestamp.js | changed |
modules_basic/timestamp.mcss | added |
modules_extra/raw.js | changed |
modules_basic/message-header.js | ||
---|---|---|
@@ -2,11 +2,14 @@ | ||
2 | 2 … | var Path = require('path') |
3 | 3 … | var h = require('../h') |
4 | 4 … | |
5 | 5 … | exports.needs = { |
6 | - avatar: 'first', | |
6 … | + avatar_link: 'first', | |
7 … | + avatar_image: 'first', | |
8 … | + avatar_name: 'first', | |
7 | 9 … | message_meta: 'map', |
8 | - message_link: 'first' | |
10 … | + message_link: 'first', | |
11 … | + timestamp: 'first' | |
9 | 12 … | } |
10 | 13 … | |
11 | 14 … | exports.gives = { |
12 | 15 … | message_header: true, |
@@ -19,10 +22,16 @@ | ||
19 | 22 … | mcss: () => fs.readFileSync(Path.join(__dirname, 'message-header.mcss')) |
20 | 23 … | } |
21 | 24 … | |
22 | 25 … | function message_header (msg) { |
26 … | + var { value } = msg | |
27 … | + var { author } = value | |
23 | 28 … | return h('MessageHeader', [ |
24 | - h('section.author', api.avatar(msg.value.author, 'thumbnail')), | |
29 … | + h('section.author', [ | |
30 … | + api.avatar_link(author, api.avatar_image(author, 'thumbnail')), | |
31 … | + api.avatar_link(author, api.avatar_name(author)), | |
32 … | + api.timestamp(msg) | |
33 … | + ]), | |
25 | 34 … | h('section.meta', api.message_meta(msg)) |
26 | 35 … | ]) |
27 | 36 … | } |
28 | 37 … | } |
modules_basic/message.js | |||
---|---|---|---|
@@ -26,8 +26,9 @@ | |||
26 | 26 … | } | |
27 | 27 … | ||
28 | 28 … | function message_render (msg, sbot) { | |
29 | 29 … | var content = api.message_content_mini(msg) | |
30 … | + // TODO re-enable | ||
30 | 31 … | //if(content) return mini(msg, content) | |
31 | 32 … | ||
32 | 33 … | var content = api.message_content(msg) | |
33 | 34 … | if(!content) return mini(msg, message_content_mini_fallback(msg)) | |
@@ -52,9 +53,9 @@ | |||
52 | 53 … | // unless in an input | |
53 | 54 … | if (ev.target.nodeName === 'INPUT' | |
54 | 55 … | || ev.target.nodeName === 'TEXTAREA') return | |
55 | 56 … | ||
56 | - // HACK! | ||
57 … | + // HACK! (mw) | ||
57 | 58 … | // there's no exported api to open a new tab. :/ | |
58 | 59 … | // it's only done in `app.js` module in an`onhashchange` handler. | |
59 | 60 … | // sooooooo yeah this shit: | |
60 | 61 … | var wtf = h('a', { href: `#${msg.key}` }) |
modules_basic/timestamp.js | ||
---|---|---|
@@ -1,28 +1,47 @@ | ||
1 | -var h = require('hyperscript') | |
1 … | +var fs = require('fs') | |
2 … | +var Path = require('path') | |
3 … | +var h = require('../h') | |
2 | 4 … | var human = require('human-time') |
3 | 5 … | |
4 | 6 … | exports.needs = {} |
5 | 7 … | |
6 | -exports.gives = 'message_meta' | |
8 … | +exports.gives = { | |
9 … | + timestamp: true, | |
10 … | + mcss: true | |
11 … | +} | |
7 | 12 … | |
8 | 13 … | exports.create = function () { |
9 | - | |
10 | - function updateTimestampEl(el) { | |
11 | - el.firstChild.nodeValue = human(new Date(el.timestamp)) | |
12 | - return el | |
13 | - } | |
14 | - | |
15 | 14 … | setInterval(function () { |
16 | - var els = [].slice.call(document.querySelectorAll('.timestamp')) | |
15 … | + var els = [].slice.call(document.querySelectorAll('.Timestamp')) | |
17 | 16 … | els.forEach(updateTimestampEl) |
18 | 17 … | }, 60e3) |
19 | 18 … | |
20 | - return function (msg) { | |
21 | - return updateTimestampEl(h('a.enter.timestamp', { | |
22 | - href: '#'+msg.key, | |
23 | - timestamp: msg.value.timestamp, | |
24 | - title: new Date(msg.value.timestamp) | |
25 | - }, '')) | |
19 … | + return { | |
20 … | + timestamp, | |
21 … | + mcss: () => fs.readFileSync(Path.join(__dirname, 'timestamp.mcss')) | |
26 | 22 … | } |
27 | 23 … | |
24 … | + function updateTimestampEl (el) { | |
25 … | + var timestamp = Number(el.getAttribute('data-timestamp')) | |
26 … | + var display = human(new Date(timestamp)) | |
27 … | + el.querySelector('a').firstChild.nodeValue = display | |
28 … | + return el | |
29 … | + } | |
30 … | + | |
31 … | + function timestamp (msg) { | |
32 … | + var { key, value } = msg | |
33 … | + var { timestamp } = value | |
34 … | + var el = h('Timestamp', { | |
35 … | + attributes: { | |
36 … | + 'data-timestamp': timestamp | |
37 … | + } | |
38 … | + }, [ | |
39 … | + h('a', { | |
40 … | + href: `#${key}`, | |
41 … | + title: new Date(timestamp) | |
42 … | + }, '') | |
43 … | + ]) | |
44 … | + updateTimestampEl(el) | |
45 … | + return el | |
46 … | + } | |
28 | 47 … | } |
modules_extra/raw.js | ||
---|---|---|
@@ -28,10 +28,11 @@ | ||
28 | 28 … | return h('input', { |
29 | 29 … | type: 'checkbox', |
30 | 30 … | title: 'View Data', |
31 | 31 … | onclick: function () { |
32 | - var msgEl = this.parentNode.parentNode.parentNode | |
33 | - var msgContentEl = msgEl.querySelector('.message_content') | |
32 … | + // HACK (mw) yo we need a better way to replace the content | |
33 … | + var msgEl = this.parentNode.parentNode.parentNode.parentNode | |
34 … | + var msgContentEl = msgEl.querySelector('.Message > section.-content') | |
34 | 35 … | if (this.checked) { |
35 | 36 … | // move away the content |
36 | 37 … | while (el = msgContentEl.firstChild) |
37 | 38 … | tmp.appendChild(el) |
Built with git-ssb-web