git ssb

2+

ev / mvd



Tree: b0af4a5b196f6a3c00d7b9e44537ccdf1248230e

Files: b0af4a5b196f6a3c00d7b9e44537ccdf1248230e / views.js

4020 bytesRaw
1var pull = require('pull-stream')
2var sbot = require('./scuttlebot')
3var hyperscroll = require('hyperscroll')
4var More = require('pull-more')
5var stream = require('hyperloadmore/stream')
6var h = require('hyperscript')
7var render = require('./render')
8var ref = require('ssb-ref')
9
10var config = require('./config')()
11
12var fs = require('fs')
13
14var compose = require('./compose')
15
16var about = function () {
17 var screen = document.getElementById('screen')
18
19 var about = require('./about')
20
21 var content = h('div.content', about)
22
23 screen.appendChild(hyperscroll(content))
24}
25
26var logStream = function () {
27 var content = h('div.content')
28 var screen = document.getElementById('screen')
29 screen.appendChild(hyperscroll(content))
30
31 function createStream (opts) {
32 return pull(
33 More(sbot.createLogStream, opts),
34 pull.map(function (msg) {
35 return render(msg)
36 })
37 )
38 }
39
40 pull(
41 createStream({old: false, limit: 10}),
42 stream.top(content)
43 )
44
45 pull(
46 createStream({reverse: true, live: false, limit: 10}),
47 stream.bottom(content)
48 )
49}
50
51var userStream = function (src) {
52 var content = h('div.content')
53 var screen = document.getElementById('screen')
54 screen.appendChild(hyperscroll(content))
55 function createStream (opts) {
56 return pull(
57 More(sbot.userStream, opts, ['value', 'sequence']),
58 pull.map(function (msg) {
59 return render(msg)
60 })
61 )
62 }
63
64 pull(
65 createStream({old: false, limit: 10, id: src}),
66 stream.top(content)
67 )
68
69 pull(
70 createStream({reverse: true, live: false, limit: 10, id: src}),
71 stream.bottom(content)
72 )
73
74}
75
76var msgThread = function(src) {
77 var content = h('div.content')
78 var screen = document.getElementById('screen')
79 screen.appendChild(hyperscroll(content))
80 sbot.get(src, function (err, data) {
81 if (err) {console.log('could not find message') }
82 data.value = data
83 console.log(data)
84 var root = src
85 if (data.value.content.root)
86 root = data.value.content.root
87 sbot.get(root, function (err, data) {
88 if (err) { console.log('could not find root')}
89 data.value = data
90 data.key = root
91 content.appendChild(render(data))
92 pull(
93 sbot.links({rel: 'root', dest: root, values: true, keys: true, live: true}),
94 pull.drain(function (msg) {
95 console.log(msg)
96 if (msg.value)
97 content.appendChild(render(msg))
98 })
99 )
100 })
101 })
102}
103
104var keyPage = function () {
105 var screen = document.getElementById('screen')
106
107 var importKey = h('textarea.import', {placeholder: 'Import a new public/private key', name: 'textarea', style: 'width: 97%; height: 100px;'})
108
109 var content = h('div.content',
110 h('div.message#key',
111 h('h1', 'Your Key'),
112 h('p', {innerHTML: 'Your public/private key is: <pre><code>' + localStorage[config.caps.shs + '/secret'] + '</code></pre>'},
113 h('button.btn', {onclick: function (e){
114 localStorage[config.caps.shs +'/secret'] = ''
115 alert('Your public/private key has been deleted')
116 e.preventDefault()
117 location.hash = ""
118 location.reload()
119 }}, 'Delete Key')
120 ),
121 h('hr'),
122 h('form',
123 importKey,
124 h('button.btn', {onclick: function (e){
125 if(importKey.value) {
126 localStorage[config.caps.shs + '/secret'] = importKey.value.replace(/\s+/g, ' ')
127 e.preventDefault()
128 alert('Your public/private key has been updated')
129 }
130 location.hash = ""
131 location.reload()
132 }}, 'Import key'),
133 )
134 )
135 )
136
137 screen.appendChild(hyperscroll(content))
138}
139
140
141function hash () {
142 return window.location.hash.substring(1)
143}
144
145module.exports = function () {
146 var src = hash()
147
148 if (ref.isFeed(src)) {
149 userStream(src)
150 } else if (ref.isMsg(src)) {
151 msgThread(src)
152 } else if (src == 'about') {
153 about()
154 } else if (src == 'key') {
155 keyPage()
156 } else {
157 logStream()
158 }
159}
160

Built with git-ssb-web