function addNotification(msg, className='is-warning') { var n = document.createElement('div') n.classList.add('notification') n.classList.add(className) n.innerHTML = msg document.getElementById('notifications').appendChild(n) } // Fetching from Medium function mediumFetch(e) { if(e) { e.preventDefault() } const postSlug = document.querySelector('[data-post-slug]').dataset.postSlug const mediumUrl = document.querySelector('[data-post-mediumurl]').dataset.postMediumurl var password = document.querySelector('input[name=password]').value console.log('Fetching ' + postSlug) const socketProtocol = (window.location.protocol === 'https:' ? 'wss:' : 'ws:') const socketUrl = socketProtocol + '//' + window.location.host + '/ws/fetch-medium/' const socket = new WebSocket(socketUrl) // set up the div statusDiv = document.getElementById('statusbar') statusText = document.createElement('p') statusText.innerText = 'Fetching post' statusText.classList.add('card-footer-item') // hide buttons for (i=0;i { socket.send('fetch ' + postSlug + ' ' + password) // keepAlive socket.send('__ping__') } socket.onmessage = m => { console.log('Got message: ' + m.data) // process keepAlive if (m.data == '__pong__') { setTimeout(()=>{socket.send('__ping__')}, 2000) return } if (m.data.indexOf(': ') != -1) { var command = m.data.slice(0, m.data.indexOf(': ')) var commandData = m.data.slice(m.data.indexOf(': ')+2) statusText.innerHTML = `${command}: ${commandData}` if (command == 'notification') { addNotification(commandData) } else if (command == 'done' || command == 'error') { // if it's an error, say it if (command == 'error') { addNotification(commandData, className='is-danger') } else { // show alert addNotification(`${postSlug} has been fetched successfully. You can now push it to Ghost`, 'is-success') } // since it's done, clean up // remove statusbar statusDiv.removeChild(statusText) socket.close() // show buttons, change text and save slug for (i=0;i { socket.send('push ' + postSlug + ' ' + password) // keepAlive socket.send('__ping__') } socket.onmessage = m => { console.log('Got message: ' + m.data) // process keepAlive if (m.data == '__pong__') { setTimeout(()=>{socket.send('__ping__')}, 2000) return } if (m.data.indexOf(': ') != -1) { var command = m.data.slice(0, m.data.indexOf(': ')) var commandData = m.data.slice(m.data.indexOf(': ')+2) statusText.innerHTML = `${command}: ${commandData}` if (command == 'notification') { addNotification(commandData) } else if (command == 'done' || command == 'error') { // if it's an error, say it if (command == 'error') { addNotification(commandData, className='is-danger') } else { // show alert // TODO: don't hard-code destination URL // (instead, fetch from server's config and display) // first, unpack info let postEditUrl commandData = commandData.split(' ') if (!!commandData[0]) postSlug = commandData[0] if (!!commandData[1]) postEditUrl = commandData[1] let msg = `${postSlug} has been pushed to Ghost. Buffer share link: https://www.snipettemag.com/${postSlug}` if (!!postEditUrl) { msg = msg + `. Edit on Ghost` } addNotification(msg, 'is-success') } // since it's done, clean up // remove statusbar statusDiv.removeChild(statusText) socket.close() // show buttons and change text for (i=0;i