Save the fediverse software together with the domain to avoid an extra http request.
This commit is contained in:
parent
a111aaa323
commit
9cd68360bf
|
@ -107,6 +107,10 @@
|
|||
|
||||
el.dataset.software = software;
|
||||
|
||||
if (software) {
|
||||
localStorage.setItem("fsb-software", software);
|
||||
}
|
||||
|
||||
if (software && knownSoftware.includes(software)) {
|
||||
updateTheIcon(iconEl, software);
|
||||
} else {
|
||||
|
@ -166,14 +170,24 @@
|
|||
let typingTimer;
|
||||
const doneTypingInterval = 1300;
|
||||
const savedDomain = localStorage.getItem("fsb-domain");
|
||||
const savedSoftware = localStorage.getItem("fsb-software");
|
||||
|
||||
[...document.getElementsByClassName("fsb-prompt")].forEach((fsbPrompt) => {
|
||||
const domainInput = fsbPrompt.getElementsByClassName("fsb-domain")[0];
|
||||
|
||||
if (savedDomain) {
|
||||
domainInput.value = savedDomain;
|
||||
|
||||
if (savedSoftware) {
|
||||
domainInput.dataset.software = savedSoftware;
|
||||
|
||||
const iconEl =
|
||||
domainInput.parentElement.getElementsByClassName("fsb-icon")[0];
|
||||
updateTheIcon(iconEl, savedSoftware);
|
||||
} else {
|
||||
updateIcon(domainInput);
|
||||
}
|
||||
}
|
||||
|
||||
domainInput.addEventListener("input", () => {
|
||||
updateIcon(domainInput);
|
||||
|
|
2
fediverse-share-button/script.min.js
vendored
2
fediverse-share-button/script.min.js
vendored
|
@ -1 +1 @@
|
|||
(async()=>{const knownSoftware=["calckey","diaspora","ecko","firefish","friendica","glitch-soc","gnu_social","gotosocial","groundpolis","hometown","hubzilla","kepi","lemmy","mastodon","misskey","misty","osada","pleroma","sharkey","socialhome","threads","xmpp","zap"];const supportedSoftware=["diaspora","firefish","friendica","glitch-soc","hometown","lemmy","mastodon","misskey","sharkey","threads"];const getFSBPath=()=>{var scripts=document.getElementsByClassName("fsb-script")[0];src=scripts.src;return src.replace("/script.min.js","")};const updateTheIcon=(iconElement,software)=>{const domainInput=iconElement.parentElement.parentElement.parentElement.getElementsByClassName("fsb-domain")[0];const supportNote=iconElement.parentElement.parentElement.parentElement.getElementsByClassName("fsb-support-note")[0];const supportNoteLink=iconElement.parentElement.parentElement.parentElement.getElementsByClassName("fsb-support-note-link")[0];iconElement.src=`${getFSBPath()}/icons/${software}.svg`;iconElement.alt=`${software} platform logo`;supportNote.classList.add("fsb-d-none");if(domainInput.value&&domainInput.value.trim().length>0&&!supportedSoftware.includes(software)){supportNoteLink.href=`https:\\${domainInput.value}`;supportNoteLink.innerHTML=domainInput.value;supportNote.classList.remove("fsb-d-none")}};const updateIcon=async domainInput=>{clearTimeout(typingTimer);if(domainInput.value){typingTimer=setTimeout((()=>{doneTyping(domainInput)}),doneTypingInterval)}else{const iconEl=domainInput.parentElement.getElementsByClassName("fsb-icon")[0];updateTheIcon(iconEl,"question")}};const doneTyping=async el=>{const shareBtn=el.parentElement.getElementsByClassName("fsb-button")[0];const domain=getDomain(el.value);shareBtn.disabled=true;const resp=await fetch(`https://fediverse-info.stefanbohacek.dev/node-info?domain=${domain}`);const respJSON=await resp.json();const software=respJSON?.software?.name;const iconEl=el.parentElement.getElementsByClassName("fsb-icon")[0];el.dataset.software=software;if(software&&knownSoftware.includes(software)){updateTheIcon(iconEl,software)}else{updateTheIcon(iconEl,"question")}shareBtn.disabled=false};const getPageTitle=()=>{let pageTitle=document.title;try{pageTitle=document.querySelector("meta[property='og:title']").getAttribute("content")}catch(error){}return encodeURIComponent(pageTitle)};const getPageDescription=()=>{let pageDescription="";const metaDescription=document.querySelector("meta[name='description']")||document.querySelector("meta[property='og:description']")||null;if(metaDescription&&metaDescription.getAttribute){pageDescription=metaDescription.getAttribute("content")}return encodeURIComponent(pageDescription)};const getPageURL=()=>encodeURIComponent(window.location.href);const getDomain=str=>str.replace(/(^\w+:|^)\/\//,"");const truncate=input=>input.length>5?`${input.substring(0,300)}...`:input;const getSelectedText=()=>{let text="";if(window.getSelection){text=window.getSelection().toString()}else if(document.selection&&document.selection.type!="Control"){text=document.selection.createRange().text}return truncate(text)};let typingTimer;const doneTypingInterval=1300;const savedDomain=localStorage.getItem("fsb-domain");[...document.getElementsByClassName("fsb-prompt")].forEach((fsbPrompt=>{const domainInput=fsbPrompt.getElementsByClassName("fsb-domain")[0];if(savedDomain){domainInput.value=savedDomain;updateIcon(domainInput)}domainInput.addEventListener("input",(()=>{updateIcon(domainInput)}));fsbPrompt.addEventListener("submit",(ev=>{ev.preventDefault();const domain=getDomain(domainInput?.value?.trim());if(domain?.length){const shareText=getSelectedText()||getPageTitle();localStorage.setItem("fsb-domain",domain);let shareURL=`https://${domain}/share?text=${shareText+"%0A%0A"+getPageURL()}`;if(domainInput?.dataset?.software){if(["diaspora","friendica"].includes(domainInput.dataset.software)){shareURL=`https://${domain}/bookmarklet?url=${getPageURL()}&title=${shareText}¬e=${getPageDescription()}`}else if(domainInput.dataset.software==="threads"){shareURL=`https://${domain}/intent/post?text=${shareText+"%0A%0A"+getPageURL()}`}}window.open(shareURL)}}))}))})();
|
||||
(async()=>{const knownSoftware=["calckey","diaspora","ecko","firefish","friendica","glitch-soc","gnu_social","gotosocial","groundpolis","hometown","hubzilla","kepi","lemmy","mastodon","misskey","misty","osada","pleroma","sharkey","socialhome","threads","xmpp","zap"];const supportedSoftware=["diaspora","firefish","friendica","glitch-soc","hometown","lemmy","mastodon","misskey","sharkey","threads"];const getFSBPath=()=>{var scripts=document.getElementsByClassName("fsb-script")[0];src=scripts.src;return src.replace("/script.min.js","")};const updateTheIcon=(iconElement,software)=>{const domainInput=iconElement.parentElement.parentElement.parentElement.getElementsByClassName("fsb-domain")[0];const supportNote=iconElement.parentElement.parentElement.parentElement.getElementsByClassName("fsb-support-note")[0];const supportNoteLink=iconElement.parentElement.parentElement.parentElement.getElementsByClassName("fsb-support-note-link")[0];iconElement.src=`${getFSBPath()}/icons/${software}.svg`;iconElement.alt=`${software} platform logo`;supportNote.classList.add("fsb-d-none");if(domainInput.value&&domainInput.value.trim().length>0&&!supportedSoftware.includes(software)){supportNoteLink.href=`https:\\${domainInput.value}`;supportNoteLink.innerHTML=domainInput.value;supportNote.classList.remove("fsb-d-none")}};const updateIcon=async domainInput=>{clearTimeout(typingTimer);if(domainInput.value){typingTimer=setTimeout((()=>{doneTyping(domainInput)}),doneTypingInterval)}else{const iconEl=domainInput.parentElement.getElementsByClassName("fsb-icon")[0];updateTheIcon(iconEl,"question")}};const doneTyping=async el=>{const shareBtn=el.parentElement.getElementsByClassName("fsb-button")[0];const domain=getDomain(el.value);shareBtn.disabled=true;const resp=await fetch(`https://fediverse-info.stefanbohacek.dev/node-info?domain=${domain}`);const respJSON=await resp.json();const software=respJSON?.software?.name;const iconEl=el.parentElement.getElementsByClassName("fsb-icon")[0];el.dataset.software=software;if(software){localStorage.setItem("fsb-software",software)}if(software&&knownSoftware.includes(software)){updateTheIcon(iconEl,software)}else{updateTheIcon(iconEl,"question")}shareBtn.disabled=false};const getPageTitle=()=>{let pageTitle=document.title;try{pageTitle=document.querySelector("meta[property='og:title']").getAttribute("content")}catch(error){}return encodeURIComponent(pageTitle)};const getPageDescription=()=>{let pageDescription="";const metaDescription=document.querySelector("meta[name='description']")||document.querySelector("meta[property='og:description']")||null;if(metaDescription&&metaDescription.getAttribute){pageDescription=metaDescription.getAttribute("content")}return encodeURIComponent(pageDescription)};const getPageURL=()=>encodeURIComponent(window.location.href);const getDomain=str=>str.replace(/(^\w+:|^)\/\//,"");const truncate=input=>input.length>5?`${input.substring(0,300)}...`:input;const getSelectedText=()=>{let text="";if(window.getSelection){text=window.getSelection().toString()}else if(document.selection&&document.selection.type!="Control"){text=document.selection.createRange().text}return truncate(text)};let typingTimer;const doneTypingInterval=1300;const savedDomain=localStorage.getItem("fsb-domain");const savedSoftware=localStorage.getItem("fsb-software");[...document.getElementsByClassName("fsb-prompt")].forEach((fsbPrompt=>{const domainInput=fsbPrompt.getElementsByClassName("fsb-domain")[0];if(savedDomain){domainInput.value=savedDomain;if(savedSoftware){domainInput.dataset.software=savedSoftware;const iconEl=domainInput.parentElement.getElementsByClassName("fsb-icon")[0];updateTheIcon(iconEl,savedSoftware)}else{updateIcon(domainInput)}}domainInput.addEventListener("input",(()=>{updateIcon(domainInput)}));fsbPrompt.addEventListener("submit",(ev=>{ev.preventDefault();const domain=getDomain(domainInput?.value?.trim());if(domain?.length){const shareText=getSelectedText()||getPageTitle();localStorage.setItem("fsb-domain",domain);let shareURL=`https://${domain}/share?text=${shareText+"%0A%0A"+getPageURL()}`;if(domainInput?.dataset?.software){if(["diaspora","friendica"].includes(domainInput.dataset.software)){shareURL=`https://${domain}/bookmarklet?url=${getPageURL()}&title=${shareText}¬e=${getPageDescription()}`}else if(domainInput.dataset.software==="threads"){shareURL=`https://${domain}/intent/post?text=${shareText+"%0A%0A"+getPageURL()}`}}window.open(shareURL)}}))}))})();
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
<meta name="description"
|
||||
content="One of the current objections to Communism, and Socialism altogether, is that the idea is so old, and yet it has
|
||||
never been realized.">
|
||||
<link rel="stylesheet" href="https://fediverse-share-button.stefanbohacek.dev/fediverse-share-button/styles.min.css">
|
||||
<link rel="stylesheet"
|
||||
href="./fediverse-share-button/styles.min.css">
|
||||
<style>
|
||||
body {
|
||||
padding: 20px 24px;
|
||||
|
@ -88,7 +89,10 @@
|
|||
target="_blank"
|
||||
href=""></a>.</p>
|
||||
</form>
|
||||
<script src="https://fediverse-share-button.stefanbohacek.dev/fediverse-share-button/script.min.js" defer class="fsb-script"></script>
|
||||
<script class="fsb-script"
|
||||
src="./fediverse-share-button/script.min.js"
|
||||
defer>
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in a new issue