secure-scuttlebot classic
1var h = require('hyperscript')
2var u = require('../util')
3var pull = require('pull-stream')
4var Scroller = require('pull-scroll')
5
6//var plugs = require('../plugs')
7//var message_render = plugs.first(exports.message_render = [])
8//var message_compose = plugs.first(exports.message_compose = [])
9//var sbot_log = plugs.first(exports.sbot_log = [])
10
11exports.needs = {
12 message_render: 'first',
13 message_compose: 'first',
14 sbot_query: 'first',
15}
16
17exports.gives = {
18 builtin_tabs: true, screen_view: true
19}
20
21exports.create = function (api) {
22
23 function publicFilter (opts) {
24 opts = opts || {}
25 var filter = {
26 $filter: {
27 rts: {}
28 }
29 }
30 if(opts.lt != null) filter.$filter.rts.$lt = opts.lt
31 if(opts.gt != null) filter.$filter.rts.$gt = opts.gt
32 if(!filter.$filter.rts.$lt && !filter.$filter.rts.$gt)
33 filter.$filter.rts.$gt = 0
34 return filter
35 }
36
37 function publicQuery (opts) {
38 opts = opts || {}
39 return api.sbot_query({
40 query: [publicFilter(opts)],
41 reverse: opts.reverse,
42 limit: opts.limit,
43 live: opts.live,
44 old: opts.old
45 })
46 }
47
48 return {
49 builtin_tabs: function () {
50 return ['/public']
51 },
52
53 screen_view: function (path, sbot) {
54 if(path === '/public') {
55
56 var content = h('div.column.scroller__content')
57 var div = h('div.column.scroller',
58 {style: {'overflow':'auto'}},
59 h('div.scroller__wrapper',
60 api.message_compose({type: 'post'}, {placeholder: 'Write a public message'}),
61 content
62 )
63 )
64
65 pull(
66 publicQuery({old: false, live: true}),
67 Scroller(div, content, api.message_render, true, false)
68 )
69
70 pull(
71 u.next(publicQuery, {
72 reverse: true,
73 limit: 100,
74 live: false,
75 old: true
76 }, ['rts']),
77 Scroller(div, content, api.message_render, false, false)
78 )
79
80 return div
81 }
82 }
83 }
84}