summaryrefslogtreecommitdiff
path: root/src/js/love.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/love.js')
-rw-r--r--src/js/love.js145
1 files changed, 78 insertions, 67 deletions
diff --git a/src/js/love.js b/src/js/love.js
index 66f47d4..59ecccc 100644
--- a/src/js/love.js
+++ b/src/js/love.js
@@ -1,15 +1,18 @@
-window.addEventListener('DOMContentLoaded', () => {
+window.addEventListener("DOMContentLoaded", () => {
// This script insert a love button at the end of an article page
- const articles = document.querySelectorAll('article');
+ const articles = document.querySelectorAll("article");
function getCurrentPageLang() {
- return document.documentElement.lang || "en";
+ return document.documentElement.lang || "en";
}
function getLikeEndPoint() {
- let currentArticleName = window.location.pathname.split('/')[2];
- if (currentArticleName.indexOf('.') > 0) {
- currentArticleName = currentArticleName.slice(0, currentArticleName.lastIndexOf('.'))
+ let currentArticleName = window.location.pathname.split("/")[2];
+ if (currentArticleName.indexOf(".") > 0) {
+ currentArticleName = currentArticleName.slice(
+ 0,
+ currentArticleName.lastIndexOf("."),
+ );
}
return `${window.location.origin}/like/${currentArticleName}`;
@@ -19,20 +22,20 @@ window.addEventListener('DOMContentLoaded', () => {
if (isAnArticle) {
const article = articles[0];
- const likes = article.querySelector('.likes');
- const nbLikes = article.querySelector('.nbLikes');
- const footnotes = article.querySelector('.footnotes');
+ const likes = article.querySelector(".likes");
+ const nbLikes = article.querySelector(".nbLikes");
+ const footnotes = article.querySelector(".footnotes");
- likes.style="display: 'block';";
+ likes.style = "display: 'block';";
const updateNbLikes = () => {
fetch(getLikeEndPoint(), {
- method: 'GET',
+ method: "GET",
headers: {
- 'i-love-what-you-do': '<3',
+ "i-love-what-you-do": "<3",
},
}).then((res) => {
if (res.ok) {
- res.text().then((text) => nbLikes.textContent = text);
+ res.text().then((text) => (nbLikes.textContent = text));
} else {
nbLikes.textContent = "";
}
@@ -46,80 +49,88 @@ window.addEventListener('DOMContentLoaded', () => {
footnotes.before(likes);
}
- const icon = likes.querySelector('.icon');
- const messagesLike = likes.querySelector('.likesNotes');
+ const icon = likes.querySelector(".icon");
+ const messagesLike = likes.querySelector(".likesNotes");
- icon.addEventListener('mouseover', () => {
+ icon.addEventListener("mouseover", () => {
for (const c of icon.children) {
- const path = c.querySelector('path');
- path?.classList.add('anim');
+ const path = c.querySelector("path");
+ path?.classList.add("anim");
}
});
- icon.addEventListener('mouseout', () => {
+ icon.addEventListener("mouseout", () => {
for (const c of icon.children) {
- const path = c.querySelector('path');
- path?.classList.remove('anim');
+ const path = c.querySelector("path");
+ path?.classList.remove("anim");
}
});
- icon.addEventListener('click', () => {
+ icon.addEventListener("click", () => {
const c = icon.children[1];
const lang = getCurrentPageLang();
- const path = c.querySelector('path');
+ const path = c.querySelector("path");
- path.classList.add('anim-click');
- path.getAnimations().forEach(anim => {
+ path.classList.add("anim-click");
+ path.getAnimations().forEach((anim) => {
anim.cancel();
anim.play();
});
fetch(getLikeEndPoint(), {
- method: 'POST',
+ method: "POST",
headers: {
- 'i-love-what-you-do': '<3',
- 'lang': lang,
+ "i-love-what-you-do": "<3",
+ lang: lang,
},
- }).then(response => {
- const t = response.text();
-
- if (response.ok) {
- messagesLike.classList.remove('err');
- t.then(t => messagesLike.textContent = t);
- updateNbLikes();
- } else {
- t.then(t => {
- // In case of error, we want to be able to set the initial message back
- const previousText = messagesLike.textContent;
- const timeoutErr = 3000;
- const wasAnError = messagesLike.classList.contains('err');
-
- // Set the error
- messagesLike.classList.add('err');
- if (Math.floor(response.status / 100) == 4) {
- messagesLike.textContent = t;
- } else {
- messagesLike.textContent = lang == 'fr' ? 'Désolé, le service est indisponible.' : 'Sorry, service unavailable.';
- }
-
- // Set the initial message back
- if(!wasAnError) {
- setTimeout(() => {
- if(messagesLike.classList.contains('err')) {
- messagesLike.classList.remove('err');
- messagesLike.textContent = previousText;
- }
- }, timeoutErr);
- }
- });
- }
- }).catch(() => {
- // In case of exception error. We don't want to set back the initial message.
- messagesLike.classList.add('err');
- messagesLike.textContent = lang == 'fr' ? 'Désolé, le service est indisponible.' : 'Sorry, service unavailable.';
- messageText = '';
- });
+ })
+ .then((response) => {
+ const t = response.text();
+
+ if (response.ok) {
+ messagesLike.classList.remove("err");
+ t.then((t) => (messagesLike.textContent = t));
+ updateNbLikes();
+ } else {
+ t.then((t) => {
+ // In case of error, we want to be able to set the initial message back
+ const previousText = messagesLike.textContent;
+ const timeoutErr = 3000;
+ const wasAnError = messagesLike.classList.contains("err");
+
+ // Set the error
+ messagesLike.classList.add("err");
+ if (Math.floor(response.status / 100) == 4) {
+ messagesLike.textContent = t;
+ } else {
+ messagesLike.textContent =
+ lang == "fr"
+ ? "Désolé, le service est indisponible."
+ : "Sorry, service unavailable.";
+ }
+
+ // Set the initial message back
+ if (!wasAnError) {
+ setTimeout(() => {
+ if (messagesLike.classList.contains("err")) {
+ messagesLike.classList.remove("err");
+ messagesLike.textContent = previousText;
+ }
+ }, timeoutErr);
+ }
+ });
+ }
+ })
+ .catch(() => {
+ // In case of exception error. We don't want to set back the initial message.
+ messagesLike.classList.add("err");
+ messagesLike.textContent =
+ lang == "fr"
+ ? "Désolé, le service est indisponible."
+ : "Sorry, service unavailable.";
+ messageText = "";
+ });
});
}
});