diff --git a/web/script.js b/web/script.js index 0bbabe2..d3cef4b 100644 --- a/web/script.js +++ b/web/script.js @@ -4,15 +4,57 @@ function createInputs(article) { if(token.adlib_tag) { inputs += `
- - + +
` } }) document.getElementById('inputs').innerHTML = inputs + + const urlParams = new URL(window.location.toLocaleString()).searchParams + if(urlParams.has('stored')) { + try { + let storedInputs = JSON.parse(atob(urlParams.get('stored'))) + + if(storedInputs.h !== article.hash) { + showError("Unable to use shared link because it's for an old article, and well, time makes fools of us all.") + } + else { + document.querySelectorAll('.token-input').forEach(function(tokenInput) { + let index = tokenInput.id.split('-')[1] + tokenInput.value = storedInputs.i[index] + }); + } + } + catch(err) { + showError("Unable to parse shared link.") + } + } } + +function showError(errorMessage) { + errorDiv = document.getElementById('error') + errorDiv.innerHTML = errorMessage; + errorDiv.style.display = 'block' +} + + +function makeSharableLink(article) { + let userInputs = {} + document.querySelectorAll('.token-input').forEach(function(tokenInput) { + let index = tokenInput.id.split('-')[1] + userInputs[index] = tokenInput.value + }); + + let storedInputs = {h: article.hash, i: userInputs} + let url = new URL(window.location.toLocaleString()) + url.searchParams.set('stored', btoa(JSON.stringify(storedInputs))) + return(url.toLocaleString()) +} + + function showArticle(article) { const noSpaceBeforeTags = new Set(['.', ',', ')', ';', ':', '!', '?', "''", 'POS']) const noSpaceBeforeTokens = new Set(["n't", ']']) @@ -20,7 +62,7 @@ function showArticle(article) { const noSpaceAfterTokens = new Set(['[']) document.getElementById('title').innerHTML = article.title - document.getElementById('link').innerHTML = `[ Original Article ]` + document.getElementById('original-article-link').href = article.url let output = '' let spaceBefore = false @@ -30,7 +72,7 @@ function showArticle(article) { } spaceBefore = true - let adlibInput = document.getElementById(`token_${token.id}`); + let adlibInput = document.getElementById(`token-${token.id}`); if(adlibInput && adlibInput.value) { output += `${adlibInput.value}` } @@ -44,10 +86,12 @@ function showArticle(article) { }) document.getElementById('summary').innerHTML = output + document.getElementById('sharable-link').href = makeSharableLink(article) document.getElementById('article').classList.add('visible') } + createInputs(article) document.addEventListener('click', function (event) {