Commit 865c9963e0dbafc3967d90ab8cb10720bc68af62
add a msg/thread view
Ev Bogue committed on 4/23/2018, 7:27:28 PMParent: 959dcfc2f4186af999f316d3aeaff1833bc443b7
Files changed
index.js | changed |
render.js | changed |
scuttlebot.js | changed |
views.js | changed |
index.js | ||
---|---|---|
@@ -8,16 +8,18 @@ | ||
8 | 8 … | |
9 | 9 … | var src = window.location.hash.substring(1) |
10 | 10 … | |
11 | 11 … | window.onhashchange = function () { |
12 | - window.location.reload() | |
12 … | + window.location.reload() | |
13 | 13 … | } |
14 | 14 … | |
15 | 15 … | console.log(src) |
16 | 16 … | |
17 | 17 … | if (src == 'raw') { |
18 | 18 … | views.rawstream() |
19 | 19 … | } else if (ref.isFeed(src)) { |
20 | 20 … | views.userstream(src) |
21 … | +} else if (ref.isMsg(src)) { | |
22 … | + views.get(src) | |
21 | 23 … | } else { |
22 | 24 … | views.logstream() |
23 | 25 … | } |
render.js | |||
---|---|---|---|
@@ -1,14 +1,23 @@ | |||
1 | 1 … | var h = require('hyperscript') | |
2 | 2 … | ||
3 | 3 … | var human = require('human-time') | |
4 | - | ||
4 … | +var ref = require('ssb-ref') | ||
5 | 5 … | var avatar = require('./avatar') | |
6 | 6 … | ||
7 | 7 … | var markdown = require('ssb-markdown') | |
8 | 8 … | var config = require('./config')() | |
9 | 9 … | ||
10 | -var rawJSON = require('patchapp-raw/json') | ||
10 … | +function rawJSON (obj) { | ||
11 … | + return JSON.stringify(obj, null, 2) | ||
12 … | + .split(/([%@&][a-zA-Z0-9\/\+]{43}=*\.[\w]+)/) | ||
13 … | + .map(function (e) { | ||
14 … | + if(ref.isMsg(e) || ref.isFeed(e) || ref.isBlob(e)) { | ||
15 … | + return h('a', {href: '#' + e}, e) | ||
16 … | + } | ||
17 … | + return e | ||
18 … | + }) | ||
19 … | +} | ||
11 | 20 … | ||
12 | 21 … | module.exports = function (msg) { | |
13 | 22 … | if (msg.value.content.type == 'post') { | |
14 | 23 … | return h('div.message__content', | |
@@ -35,8 +44,8 @@ | |||
35 | 44 … | avatar.name(msg.value.author) | |
36 | 45 … | ) | |
37 | 46 … | ), | |
38 | 47 … | h('span.timestamp', h('a', {href: '#' + msg.key}, human(new Date(msg.value.timestamp)))), | |
39 | - h('pre.raw__json', {id: msg.key}, rawJSON(msg)) | ||
48 … | + h('pre', rawJSON(msg.value.content)) | ||
40 | 49 … | ) | |
41 | 50 … | } | |
42 | 51 … | } |
scuttlebot.js | ||
---|---|---|
@@ -50,7 +50,19 @@ | ||
50 | 50 … | ) |
51 | 51 … | }), |
52 | 52 … | query: rec.source(function (query) { |
53 | 53 … | return sbot.query.read(query) |
54 … | + }), | |
55 … | + get: rec.async(function (key, cb) { | |
56 … | + if('function' !== typeof cb) | |
57 … | + throw new Error('cb must be function') | |
58 … | + if(CACHE[key]) cb(null, CACHE[key]) | |
59 … | + else sbot.get(key, function (err, value) { | |
60 … | + if(err) return cb(err) | |
61 … | + cb(null, CACHE[key] = value) | |
62 … | + }) | |
63 … | + }), | |
64 … | + links: rec.source(function (query) { | |
65 … | + return sbot.links(query) | |
54 | 66 … | }) |
55 | 67 … | } |
56 | 68 … |
views.js | ||
---|---|---|
@@ -23,14 +23,14 @@ | ||
23 | 23 … | ) |
24 | 24 … | } |
25 | 25 … | |
26 | 26 … | pull( |
27 | - createStream({old: false, limit: 100}), | |
27 … | + createStream({old: false, limit: 10}), | |
28 | 28 … | stream.top(content) |
29 | 29 … | ) |
30 | 30 … | |
31 | 31 … | pull( |
32 | - createStream({reverse: true, live: false, limit: 100}), | |
32 … | + createStream({reverse: true, live: false, limit: 10}), | |
33 | 33 … | stream.bottom(content) |
34 | 34 … | ) |
35 | 35 … | } |
36 | 36 … | |
@@ -94,4 +94,36 @@ | ||
94 | 94 … | stream.bottom(content) |
95 | 95 … | ) |
96 | 96 … | |
97 | 97 … | } |
98 … | + | |
99 … | +module.exports.get = function (src) { | |
100 … | + var content = h('div.content') | |
101 … | + | |
102 … | + document.body.appendChild(h('div.screen', | |
103 … | + {style: {position: 'absolute', top: '0px', bottom: '0px', left: '0px', right: '0px'}}, | |
104 … | + hyperscroll(content) | |
105 … | + )) | |
106 … | + | |
107 … | + sbot.get(src, function (err, data) { | |
108 … | + if (err) {console.log('could not find message') } | |
109 … | + data.value = data | |
110 … | + console.log(data) | |
111 … | + var root = src | |
112 … | + if (data.value.content.root) | |
113 … | + root = data.value.content.root | |
114 … | + sbot.get(root, function (err, data) { | |
115 … | + if (err) { console.log('could not find root')} | |
116 … | + data.value = data | |
117 … | + data.key = root | |
118 … | + content.appendChild(h('div.message', render(data))) | |
119 … | + pull( | |
120 … | + sbot.links({rel: 'root', dest: root, values: true, keys: true, live: true}), | |
121 … | + pull.drain(function (msg) { | |
122 … | + console.log(msg) | |
123 … | + if (msg.value) | |
124 … | + content.appendChild(h('div.message', render(msg))) | |
125 … | + }) | |
126 … | + ) | |
127 … | + }) | |
128 … | + }) | |
129 … | +} |
Built with git-ssb-web