diff options
Diffstat (limited to 'composer.js')
-rw-r--r-- | composer.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/composer.js b/composer.js new file mode 100644 index 0000000..17b4df9 --- /dev/null +++ b/composer.js @@ -0,0 +1,88 @@ +function composer (keys, reply, gotName, edit) { + var messageDiv = h('div') + var message = h('div', {classList: 'message'}) + + if (edit) { + console.log(reply) + var textarea = h('textarea', [reply.text]) + } else if (gotName) { + var textarea = h('textarea', ['[' + gotName.textContent + '](' + reply.author + ')']) + } else { + var textarea = h('textarea', {placeholder: 'Write a new bog post...'}) + } + + var publisher = h('div', [ + textarea, + h('button', { + onclick: function () { + if (textarea.value) { + if (edit) { + var content = { + type: 'edit', + text: textarea.value + } + } else { + var content = { + type: 'post', + text: textarea.value + } + } + + if (edit) { + content.edited = reply.key + } else if (reply) { + content.reply = reply.key + } + + publish(content, keys, {preview: true}).then(post => { + open(post).then(msg => { + var preview = render(msg, keys, {preview: true}) + var cache = messageDiv.firstChild + messageDiv.appendChild(preview) + messageDiv.removeChild(messageDiv.firstChild) + preview.firstChild.appendChild(h('button', { + onclick: function () { + messageDiv.removeChild(messageDiv.firstChild) + messageDiv.appendChild(cache) + } + }, ['Cancel'])) + preview.firstChild.appendChild(h('button', { + onclick: function () { + publish(content, keys).then(post => { + open(post).then(msg => { + textarea.value = '' + if (edit) { + console.log('APPENDING EDIT') + var gotit = document.getElementById(reply.key) + gotit.appendChild(h('div', {classList: 'submessage'}, [render(msg, keys)])) + var newContent = h('div', {innerHTML: marked(msg.text)}) + gotit.firstChild.replaceChild(newContent, gotit.firstChild.childNodes[1]) + } + if (reply) { + messageDiv.removeChild(messageDiv.firstChild) + } + else if (messageDiv.firstChild) { + messageDiv.removeChild(messageDiv.firstChild) + messageDiv = h('div') + messageDiv.appendChild(cache) + scroller.insertBefore(messageDiv, scroller.childNodes[2]) + scroller.insertBefore(render(msg, keys), scroller.childNodes[3]) + } else { + messageDiv.appendChild(render(msg, keys)) + } + }) + }) + } + }, ['Publish'])) + }) + }) + } + } + }, ['Preview']) + ]) + + message.appendChild(publisher) + messageDiv.appendChild(message) + return messageDiv +} + |