Commit 66eb3aded58d22467d641cb52da1353212e8219a
render git-update messages
Matt McKegg committed on 2/15/2017, 3:05:16 PMParent: 95058d6799fcafd88e35f991f8ffb17990ee68d6
Files changed
plugs/message/html/layout/default.js | changed |
plugs/message/html/layout/mini.js | added |
plugs/message/html/render/git.js | added |
plugs/message/html/layout/default.js | ||
---|---|---|
@@ -17,9 +17,9 @@ | ||
17 | 17 … | exports.create = function (api) { |
18 | 18 … | return nest('message.html.layout', layout) |
19 | 19 … | |
20 | 20 … | function layout (msg, opts) { |
21 | - if (!(opts.layout === undefined || opts.layout === 'default' || opts.layout === 'mini')) return | |
21 … | + if (!(opts.layout === undefined || opts.layout === 'default')) return | |
22 | 22 … | |
23 | 23 … | var classList = ['Message'] |
24 | 24 … | var replyInfo = null |
25 | 25 … |
plugs/message/html/layout/mini.js | ||
---|---|---|
@@ -1,0 +1,33 @@ | ||
1 … | +const h = require('mutant/h') | |
2 … | +const nest = require('depnest') | |
3 … | + | |
4 … | +exports.needs = nest({ | |
5 … | + 'message.html': { | |
6 … | + backlinks: 'first', | |
7 … | + author: 'first', | |
8 … | + meta: 'map', | |
9 … | + timestamp: 'first' | |
10 … | + }, | |
11 … | + 'profile.html.person': 'first' | |
12 … | +}) | |
13 … | + | |
14 … | +exports.gives = nest('message.html.layout') | |
15 … | + | |
16 … | +exports.create = (api) => { | |
17 … | + return nest('message.html.layout', mini) | |
18 … | + | |
19 … | + function mini (msg, opts) { | |
20 … | + if (opts.layout !== 'mini') return | |
21 … | + return h('div', { | |
22 … | + classList: 'Message -mini' | |
23 … | + }, [ | |
24 … | + h('header', [ | |
25 … | + h('div.mini', [ | |
26 … | + api.profile.html.person(msg.value.author), ' ', | |
27 … | + opts.content | |
28 … | + ]), | |
29 … | + h('div.meta', {}, api.message.html.timestamp(msg)) | |
30 … | + ]) | |
31 … | + ]) | |
32 … | + } | |
33 … | +} |
plugs/message/html/render/git.js | ||
---|---|---|
@@ -1,0 +1,46 @@ | ||
1 … | +var {h, when} = require('mutant') | |
2 … | +var nest = require('depnest') | |
3 … | +var extend = require('xtend') | |
4 … | + | |
5 … | +exports.needs = nest({ | |
6 … | + 'message.html': { | |
7 … | + decorate: 'reduce', | |
8 … | + layout: 'first', | |
9 … | + link: 'first', | |
10 … | + markdown: 'first' | |
11 … | + } | |
12 … | +}) | |
13 … | + | |
14 … | +exports.gives = nest('message.html.render') | |
15 … | + | |
16 … | +exports.create = function (api) { | |
17 … | + return nest('message.html.render', function renderMessage (msg, opts) { | |
18 … | + if (msg.value.content.type !== 'git-update') return | |
19 … | + var element = api.message.html.layout(msg, extend({ | |
20 … | + content: messageContent(msg), | |
21 … | + layout: 'mini' | |
22 … | + }, opts)) | |
23 … | + | |
24 … | + return api.message.html.decorate(element, { msg }) | |
25 … | + }) | |
26 … | + | |
27 … | + function messageContent (msg) { | |
28 … | + var commits = msg.value.content.commits || [] | |
29 … | + return [ | |
30 … | + h('a', {href: msg.key, title: commitSummary(commits)}, [ | |
31 … | + 'pushed', | |
32 … | + when(commits, [' ', pluralizeCommits(commits)]) | |
33 … | + ]), | |
34 … | + ' to ', | |
35 … | + api.message.html.link(msg.value.content.repo) | |
36 … | + ] | |
37 … | + } | |
38 … | +} | |
39 … | + | |
40 … | +function pluralizeCommits (commits) { | |
41 … | + return when(commits.length === 1, '1 commit', `${commits.length} commits`) | |
42 … | +} | |
43 … | + | |
44 … | +function commitSummary (commits) { | |
45 … | + return commits.map(commit => `- ${commit.title}`).join('\n') | |
46 … | +} |
Built with git-ssb-web