97 lines
1.6 KiB
JavaScript
97 lines
1.6 KiB
JavaScript
|
function showLink() {
|
||
|
|
||
|
var link = location.origin + '/?id=' + state.id
|
||
|
history.pushState(state.id, '', link)
|
||
|
|
||
|
var linkEl = document.getElementById('shareLink')
|
||
|
linkEl.href = link
|
||
|
linkEl.innerHTML = link
|
||
|
|
||
|
document.querySelector('#sharing input').style.display = 'none'
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
function removeLink() {
|
||
|
|
||
|
var linkEl = document.getElementById('shareLink')
|
||
|
linkEl.href = ''
|
||
|
linkEl.innerHTML = ''
|
||
|
|
||
|
document.querySelector('#sharing input').style.display = 'inline-block'
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
async function shareQuiz() {
|
||
|
|
||
|
if (state.id) {
|
||
|
console.log('Showing saved local link')
|
||
|
showLink()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
console.log('Saving quiz to server. QuizData:')
|
||
|
|
||
|
var quizData = {
|
||
|
title: state.title,
|
||
|
questions: state.questions
|
||
|
}
|
||
|
|
||
|
console.log(quizData)
|
||
|
console.log('Waiting for id')
|
||
|
|
||
|
var db = location.origin + '/db'
|
||
|
|
||
|
var response = await fetch(db, {
|
||
|
method: 'POST',
|
||
|
headers: {'Content-Type': 'text/plain'},
|
||
|
body: JSON.stringify(quizData)
|
||
|
})
|
||
|
|
||
|
if (response.ok == false) {
|
||
|
alert('Something went wrong while sharing')
|
||
|
return
|
||
|
}
|
||
|
|
||
|
var responseBody = await response.text()
|
||
|
console.log('Received id: ' + responseBody)
|
||
|
state.id = responseBody
|
||
|
|
||
|
showLink()
|
||
|
|
||
|
}
|
||
|
|
||
|
function idFromUrl() {
|
||
|
|
||
|
var s = window.location.search.split('id=')
|
||
|
|
||
|
if (s.length <= 1)
|
||
|
return null
|
||
|
|
||
|
return s[1].split('&')[0]
|
||
|
|
||
|
}
|
||
|
|
||
|
async function fetchQuiz(id) {
|
||
|
|
||
|
console.log('Fetching quiz')
|
||
|
|
||
|
var url = location.origin + '/db/' + id
|
||
|
|
||
|
var response = await fetch(url)
|
||
|
|
||
|
if (response.ok == false) {
|
||
|
alert('Something went wrong while loading this quiz')
|
||
|
return
|
||
|
}
|
||
|
|
||
|
var json = await response.json()
|
||
|
|
||
|
console.log('Quiz fetched. Response:')
|
||
|
console.log(json)
|
||
|
|
||
|
return json
|
||
|
|
||
|
}
|