git ssb

2+

ev / mvd



Tree: a41750fd72cc6915cab66dfd5d12958892158a6b

Files: a41750fd72cc6915cab66dfd5d12958892158a6b / compose.js

2512 bytesRaw
1var h = require('hyperscript')
2var pull = require('pull-stream')
3var sbot = require('./scuttlebot')
4
5var header = require('./rendertools').header
6var id = require('./keys').id
7
8var mime = require('simple-mime')('application/octect-stream')
9var split = require('split-buffer')
10
11function file_input (onAdded) {
12 return h('label.btn', 'Upload file',
13 h('input', { type: 'file', hidden: true,
14 onchange: function (ev) {
15 var file = ev.target.files[0]
16 if (!file) return
17 var reader = new FileReader()
18 reader.onload = function () {
19 pull(
20 pull.values(split(new Buffer(reader.result), 64*1024)),
21 sbot.addblob(function (err, blob) {
22 if(err) return console.error(err)
23 onAdded({
24 link: blob,
25 name: file.name,
26 size: reader.result.length || reader.result.byteLength,
27 type: mime(file.name)
28 })
29 })
30 )
31 }
32 reader.readAsArrayBuffer(file)
33 }
34 }))
35}
36
37module.exports = function (opts) {
38 var files = []
39 var filesById = {}
40
41 var composer = h('div.composer')
42
43 var container = h('div.container')
44
45 var textarea = h('textarea.compose', {placeholder: 'Write a message' || opts.placeholder})
46
47 var initialButtons = h('span',
48 h('button.btn', 'Preview', {
49 onclick: function () {
50
51 var msg = {}
52 msg.value = {
53 "author": id,
54 "content": {
55 "type": opts.type,
56 "root": opts.root
57 }
58 }
59 msg.value.content.text = textarea.value
60 console.log(msg)
61
62 var preview = h('div',
63 header(msg),
64 h('div.message__content', msg.value.content.text),
65 h('button.btn', 'Publish', {
66 onclick: function () {
67 sbot.publish(msg.value.content, function (err, msg) {
68 if(err) throw err
69 console.log('Published!', msg)
70 window.location.reload()
71 if(cb) cb(err, msg)
72 })
73 }
74 })
75 )
76 composer.replaceChild(preview, composer.firstChild)
77 }
78 }),
79 file_input(function (file) {
80 files.push(file)
81 filesById[file.link] = file
82 var embed = file.type.indexOf('image/') === 0 ? '!' : ''
83 textarea.value += embed + '['+file.name+']('+file.link+')'
84 })
85 )
86
87 composer.appendChild(container)
88 container.appendChild(textarea)
89 container.appendChild(initialButtons)
90
91 return composer
92}
93
94

Built with git-ssb-web