seance/static/app.js
Hippo 406e54c018 Add (very rudimentary password check)
This also properly handles other errors if/when they come up
2020-05-14 22:34:27 +05:30

150 lines
4.6 KiB
JavaScript

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)
}
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<statusDiv.children.length;i++) {
statusDiv.children[i].classList.add('is-hidden')
}
statusDiv.appendChild(statusText)
socket.onopen = () => {
socket.send('fetch ' + postSlug + ' ' + password)
}
socket.onmessage = m => {
console.log('Got message: ' + m.data)
console.log(m.data)
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 = `<b>${command}: </b>${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)
// show buttons, change text and save slug
for (i=0;i<statusDiv.children.length;i++) {
if (statusDiv.children[i].innerText.startsWith('Fetch')) {
statusDiv.children[i].innerText = 'Fetch again'
}
if (statusDiv.children[i].innerText == 'Push to Ghost') {
statusDiv.children[i].dataset.postSlug = commandData
}
statusDiv.children[i].classList.remove('is-hidden')
}
}
} else {
statusText.innerHTML = m.data
}
}
}
function ghostPush(e) {
if(e) { e.preventDefault() }
const postSlug = document.querySelector('[data-post-slug]').dataset.postSlug
var password = document.querySelector('input[name=password]').value
console.log('Pushing ' + postSlug)
const socketProtocol = (window.location.protocol === 'https:' ? 'wss:' : 'ws:')
const socketUrl = socketProtocol + '//' + window.location.host + '/ws/push-ghost/'
const socket = new WebSocket(socketUrl)
// set up the div
statusDiv = document.getElementById('statusbar')
statusText = document.createElement('p')
statusText.innerText = 'Pushing to Ghost'
statusText.classList.add('card-footer-item')
// hide buttons
for (i=0;i<statusDiv.children.length;i++) {
statusDiv.children[i].classList.add('is-hidden')
}
statusDiv.appendChild(statusText)
socket.onopen = () => {
socket.send('push ' + postSlug + ' ' + password)
}
socket.onmessage = m => {
console.log('Got message: ' + m.data)
console.log(m.data)
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 = `<b>${command}: </b>${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 pushed to Ghost`, 'is-success')
}
// since it's done, clean up
// remove statusbar
statusDiv.removeChild(statusText)
// show buttons and change text
for (i=0;i<statusDiv.children.length;i++) {
if (statusDiv.children[i].innerText.startsWith('Push')) {
statusDiv.children[i].innerText = 'Push again'
}
statusDiv.children[i].classList.remove('is-hidden')
}
}
} else {
statusText.innerHTML = m.data
}
}
}