From 1f9cec2269247bcf1cce6754b1706b5aa6f6fc2a Mon Sep 17 00:00:00 2001 From: Nikita Karamov Date: Wed, 23 Sep 2020 18:10:47 +0200 Subject: [PATCH] Add sharing functionality --- src/index.pug | 6 +++--- src/script/index.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/index.pug b/src/index.pug index f1096fb..9f9d967 100644 --- a/src/index.pug +++ b/src/index.pug @@ -12,14 +12,14 @@ html(lang="en") h1 toot p Share links on any Mastodon instance main - form + form#form section label(for="instance") Mastodon instance URL - input#instance(type="url", name="instance", placeholder="https://") + input#instance(type="url", name="instance", placeholder="https://", required) section.remember input#remember(type="checkbox", name="remember") - label(for="remember") Remember as my default instance + label(for="remember") Autofill this instance URL next time section.submit input(type="submit", value="Share post") diff --git a/src/script/index.js b/src/script/index.js index e69de29..6cabf4e 100644 --- a/src/script/index.js +++ b/src/script/index.js @@ -0,0 +1,39 @@ +var remembered = window.localStorage.getItem('mastodon_instance'); +if (remembered != null) { + document.getElementById('instance').value = remembered; +} + +var parsedQuery = {}; + +var paramPairs = window.location.search.substr(1).split('&'); +var paramPairsLength = paramPairs.length; + +for (var i = 0; i < paramPairsLength; i++) { + var paramPair = paramPairs[i].split('='); + parsedQuery[paramPair[0]] = paramPair[1]; +} +delete i +delete paramPair + +document + .getElementById('form') + .addEventListener('submit', function (e) { + e.preventDefault(); + var instance = e.target.elements['instance'].value; + var remember = e.target.elements['remember'].checked; + + + if (!(instance.startsWith("https://") || instance.startsWith("http://"))) { + instance = "https://" + instance; + } + if (!instance.endsWith("/")){ + instance = instance + "/"; + } + + if (remember) { + window.localStorage.setItem('mastodon_instance', instance); + } + + var shareUrl = instance + "share?text=" + parsedQuery.text; + window.open(shareUrl, '_blank', 'noopener,noreferrer') +})