Commit c2d8083ad55e777a6e7b82aaa57f2aaa27f5a607
show thread forks and authors of message backlinks
Matt McKegg committed on 6/2/2017, 7:28:19 AMParent: 47128cd0a170a7691269a44d297af30a324c3a4a
Files changed
modules/page/html/render/message.js | changed |
package.json | changed |
plugs/message/html/layout/default.js | changed |
styles/message.mcss | changed |
modules/page/html/render/message.js | ||
---|---|---|
@@ -15,9 +15,9 @@ | ||
15 | 15 … | |
16 | 16 … | exports.gives = nest('page.html.render') |
17 | 17 … | |
18 | 18 … | exports.create = function (api) { |
19 | - return nest('page.html.render', function channel (id) { | |
19 … | + return nest('page.html.render', function (id) { | |
20 | 20 … | if (!ref.isMsg(id)) return |
21 | 21 … | var loader = h('div', {className: 'Loading -large'}) |
22 | 22 … | |
23 | 23 … | var result = Proxy(loader) |
@@ -49,9 +49,9 @@ | ||
49 | 49 … | var isReply = !!value.content.root |
50 | 50 … | var thread = api.feed.obs.thread(id, {branch: isReply}) |
51 | 51 … | |
52 | 52 … | meta.channel.set(value.content.channel) |
53 | - meta.root.set(thread.rootId) | |
53 … | + meta.root.set(value.content.root || thread.rootId) | |
54 | 54 … | |
55 | 55 … | // if root thread, reply to last post |
56 | 56 … | meta.branch.set(isReply ? thread.branchId : thread.lastId) |
57 | 57 … |
package.json | ||
---|---|---|
@@ -37,9 +37,9 @@ | ||
37 | 37 … | "mutant-pull-reduce": "^1.1.0", |
38 | 38 … | "non-private-ip": "^1.4.1", |
39 | 39 … | "on-change-network": "0.0.2", |
40 | 40 … | "on-wakeup": "^1.0.1", |
41 | - "patchcore": "~0.5.2", | |
41 … | + "patchcore": "~0.6.0", | |
42 | 42 … | "patchwork-gatherings": "^1.0.2", |
43 | 43 … | "pull-abortable": "^4.1.0", |
44 | 44 … | "pull-defer": "^0.2.2", |
45 | 45 … | "pull-file": "~1.0.0", |
plugs/message/html/layout/default.js | ||
---|---|---|
@@ -1,12 +1,14 @@ | ||
1 | -const { when, h, map, computed } = require('mutant') | |
1 … | +const { h, map, computed } = require('mutant') | |
2 | 2 … | var nest = require('depnest') |
3 | 3 … | var ref = require('ssb-ref') |
4 | 4 … | |
5 | 5 … | exports.needs = nest({ |
6 | 6 … | 'profile.html.person': 'first', |
7 | 7 … | 'message.obs.backlinks': 'first', |
8 | 8 … | 'message.obs.name': 'first', |
9 … | + 'message.obs.forks': 'first', | |
10 … | + 'message.obs.author': 'first', | |
9 | 11 … | 'message.html': { |
10 | 12 … | link: 'first', |
11 | 13 … | meta: 'map', |
12 | 14 … | action: 'map', |
@@ -23,8 +25,10 @@ | ||
23 | 25 … | function layout (msg, opts) { |
24 | 26 … | if (!(opts.layout === undefined || opts.layout === 'default')) return |
25 | 27 … | |
26 | 28 … | var backlinks = opts.backlinks ? api.message.obs.backlinks(msg.key) : [] |
29 … | + var forks = msg.value.content.root ? api.message.obs.forks(msg.key) : [] | |
30 … | + | |
27 | 31 … | var classList = ['Message'] |
28 | 32 … | var replyInfo = null |
29 | 33 … | |
30 | 34 … | if (msg.value.content.root) { |
@@ -59,15 +63,29 @@ | ||
59 | 63 … | ]) |
60 | 64 … | ]) |
61 | 65 … | } |
62 | 66 … | }), |
63 | - map(backlinks, backlink => { | |
67 … | + map(forks, msgId => { | |
64 | 68 … | return h('a.backlink', { |
65 | - href: backlink, | |
66 | - title: backlink | |
69 … | + href: msgId, | |
70 … | + title: msgId | |
67 | 71 … | }, [ |
68 | - h('strong', 'Referenced from'), ' ', api.message.obs.name(backlink) | |
72 … | + h('strong', [ | |
73 … | + authorLink(msgId), ' forked this discussion:' | |
74 … | + ]), ' ', | |
75 … | + api.message.obs.name(msgId) | |
69 | 76 … | ]) |
77 … | + }), | |
78 … | + map(backlinks, msgId => { | |
79 … | + return h('a.backlink', { | |
80 … | + href: msgId, | |
81 … | + title: msgId | |
82 … | + }, [ | |
83 … | + h('strong', [ | |
84 … | + authorLink(msgId), ' referenced this message:' | |
85 … | + ]), ' ', | |
86 … | + api.message.obs.name(msgId) | |
87 … | + ]) | |
70 | 88 … | }) |
71 | 89 … | ]) |
72 | 90 … | |
73 | 91 … | // scoped |
@@ -97,8 +115,19 @@ | ||
97 | 115 … | additionalMeta |
98 | 116 … | ]) |
99 | 117 … | ]) |
100 | 118 … | } |
119 … | + | |
120 … | + function authorLink (msgId) { | |
121 … | + var author = api.message.obs.author(msgId) | |
122 … | + return computed(author, author => { | |
123 … | + if (author) { | |
124 … | + return api.profile.html.person(author) | |
125 … | + } else { | |
126 … | + return 'Someone' | |
127 … | + } | |
128 … | + }) | |
129 … | + } | |
101 | 130 … | } |
102 | 131 … | } |
103 | 132 … | |
104 | 133 … | function last (array) { |
styles/message.mcss | ||
---|---|---|
@@ -192,13 +192,11 @@ | ||
192 | 192 … | } |
193 | 193 … | |
194 | 194 … | a.backlink { |
195 | 195 … | display: block; |
196 | - border-top: 1px solid #e2e0e0; | |
197 | - margin: 0 -1px; | |
196 … | + border-top: 1px solid #EEE; | |
198 | 197 … | padding: 10px 15px; |
199 | - background: #f3f2f2; | |
200 | - border-bottom: 1px solid #d1d0d0; | |
198 … | + background: #ffffff; | |
201 | 199 … | color: #8f8f8f; |
202 | 200 … | margin-top: -1px; |
203 | 201 … | font-size: 9pt; |
204 | 202 … |
Built with git-ssb-web