78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
|
(() => {
|
||
|
|
||
|
const baseUrl = 'http://localhost:4000'
|
||
|
|
||
|
function resetTitle() {
|
||
|
document.title = document.title.replace('[Loading...] ', '')
|
||
|
}
|
||
|
|
||
|
// Check that we're not on a Seance page
|
||
|
if (window.location.href.startsWith(baseUrl)) {
|
||
|
alert('That\'s not how to do it, silly!\n\nYou\'re supposed to BOOKMARK this link (by dragging it to the bookmarks bar or right-clicking and saying "save bookmark").\n\nWait till you\'re on a Medium page; don\'t try to start clicking on it right now ;)')
|
||
|
|
||
|
// Reset title
|
||
|
resetTitle()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// Keep the user engaged with a nice bannery message
|
||
|
|
||
|
var d1 = document.createElement('div')
|
||
|
d1.style="position: absolute; top:0; right: 0; left: 0; background-color: turquoise; min-height: 2em; z-index: 100; text-align: center;"
|
||
|
|
||
|
var p1 = document.createElement('p')
|
||
|
p1.innerHTML = 'Seance loading in progress...'
|
||
|
p1.style='font-size: 2rem; margin: 2rem; color: white;'
|
||
|
|
||
|
d1.appendChild(p1)
|
||
|
document.body.appendChild(d1)
|
||
|
|
||
|
// Form sending function
|
||
|
function handleJSON(data) {
|
||
|
try {
|
||
|
data = JSON.parse(data.slice(data.indexOf('{')))
|
||
|
} catch (err) {
|
||
|
alert('Something went wrong fetching the post. Please make sure you\'re on a Medium site and try again.')
|
||
|
|
||
|
// Hide the loading screen
|
||
|
d1.parentElement.removeChild(d1)
|
||
|
|
||
|
// Reset the title
|
||
|
resetTitle()
|
||
|
|
||
|
// Give up
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// Create a form to hold the data
|
||
|
var f = document.createElement('form')
|
||
|
f.action=baseUrl + '/fetch/'
|
||
|
f.method='post'
|
||
|
|
||
|
// Create hidden input to hold data
|
||
|
i = document.createElement('input')
|
||
|
i.name='data'
|
||
|
i.type='hidden'
|
||
|
i.value=JSON.stringify(data)
|
||
|
|
||
|
// Assign children to parents
|
||
|
f.appendChild(i)
|
||
|
document.body.appendChild(f)
|
||
|
|
||
|
// Submit the form
|
||
|
f.submit()
|
||
|
}
|
||
|
|
||
|
// fetch the XML
|
||
|
var r = new XMLHttpRequest()
|
||
|
r.open('GET', window.location + '?format=json')
|
||
|
r.onreadystatechange = function () {
|
||
|
if (r.readyState == 4 && r.status == 200) {
|
||
|
handleJSON(r.responseText)
|
||
|
}
|
||
|
}
|
||
|
r.setRequestHeader("Content-Type", "application/json;charset=utf-8")
|
||
|
r.send(null)
|
||
|
|
||
|
})()
|