git ssb

2+

mixmix / ticktack



Tree: 8c68dbb9a3b69a0cf0e0dd503ef059a873189cd5

Files: 8c68dbb9a3b69a0cf0e0dd503ef059a873189cd5 / blog / html / blog.js

1851 bytesRaw
1const pull = require('pull-stream')
2const nest = require('depnest')
3const { h, onceTrue } = require('mutant')
4const get = require('lodash/get')
5const { isBlob } = require('ssb-ref')
6
7exports.gives = nest({
8 'blog.html.title': true,
9 'blog.html.summary': true,
10 'blog.html.thumbnail': true,
11 'blog.html.content': true,
12})
13
14exports.needs = nest({
15 'message.html.markdown': 'first',
16 'sbot.pull.stream': 'first',
17 'sbot.obs.connection': 'first'
18})
19
20
21exports.create = function (api) {
22 function loadBlob (data) {
23 const { blog } = data.value.content
24 if (!isBlob(blog)) {
25 console.log(`malformed Blog blog: ${blog}`, data)
26 return
27 }
28
29 onceTrue(
30 api.sbot.obs.connection(),
31 sbot => sbot.blobs.want(blog, (err, success) => {
32 if (err) throw err
33
34 // console.log(`want blog ${blog}, callback: ${success}`)
35 })
36 )
37 }
38
39 return nest({
40 'blog.html.title': function (data) {
41 if(!isBlog(data)) return
42
43 return data.value.content.title
44 },
45 'blog.html.summary': function (data) {
46 if(!isBlog(data)) return
47
48 loadBlob(data)
49 return data.value.content.summary
50 },
51 'blog.html.thumbnail': function (data) {
52 if(!isBlog(data)) return
53 return data.value.content.thumbnail
54 },
55 'blog.html.content': function (data) {
56 if(!isBlog(data)) return
57
58 loadBlob(data)
59 var div = h('Markdown')
60 pull(
61 api.sbot.pull.stream(function (sbot) {
62 return sbot.blobs.get(data.value.content.blog)
63 }),
64 pull.collect(function (err, ary) {
65 if(err) return
66 var md = api.message.html.markdown({text: Buffer.concat(ary).toString()})
67 div.innerHTML = md.innerHTML
68 })
69 )
70 return div
71 }
72 })
73}
74
75function isBlog (msg) {
76 return get(msg, 'value.content.type') === 'blog'
77}
78
79

Built with git-ssb-web