git ssb

2+

ev / mvd



Tree: c4a5bbce3ba975d7c10582da85771ea6fe6d9f0e

Files: c4a5bbce3ba975d7c10582da85771ea6fe6d9f0e / compose.js

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

Built with git-ssb-web