From 37ab1055e7f82fc4f51b7063cbbbacbc38441cf9 Mon Sep 17 00:00:00 2001
From: Served Smart <195884188+servedsmart@users.noreply.github.com>
Date: Wed, 4 Jun 2025 23:51:03 +0200
Subject: [PATCH] :recycle: refactor: Move similar javascript inline code out
of line
- Move variables oid, oid_likes out of line
- Move background-blur out of line
- Move fetch-repo code out of line
---
assets/js/background-blur.js | 13 +++++++
assets/js/fetch-repo.js | 30 ++++++++++++++++
assets/js/page.js | 36 ++++++++++---------
layouts/_default/list.html | 6 +---
layouts/_default/single.html | 8 ++---
layouts/_default/term.html | 6 +---
layouts/_default/terms.html | 6 +---
layouts/partials/header/fixed-fill-blur.html | 10 ++----
layouts/partials/header/fixed-gradient.html | 10 ++----
layouts/partials/header/fixed.html | 10 ++----
layouts/partials/hero/background.html | 10 ++----
layouts/partials/hero/thumbAndBackground.html | 10 ++----
layouts/partials/home/background.html | 10 ++----
layouts/shortcodes/codeberg.html | 18 ++--------
layouts/shortcodes/forgejo.html | 18 ++--------
layouts/shortcodes/gitea.html | 18 ++--------
layouts/shortcodes/github.html | 18 ++--------
layouts/shortcodes/gitlab.html | 18 ++--------
18 files changed, 100 insertions(+), 155 deletions(-)
create mode 100644 assets/js/background-blur.js
create mode 100644 assets/js/fetch-repo.js
diff --git a/assets/js/background-blur.js b/assets/js/background-blur.js
new file mode 100644
index 00000000..bf42aa58
--- /dev/null
+++ b/assets/js/background-blur.js
@@ -0,0 +1,13 @@
+function backgroundBlur() {
+ const script = document.currentScript;
+ const targetId = script && script.getAttribute("data-target-id") ? script.getAttribute("data-target-id")
+ : (console.error("data-target-id is null"), null);
+
+ window.addEventListener("scroll", () => {
+ const scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
+ const backgroundBlur = document.getElementById(targetId);
+ backgroundBlur.style.opacity = scroll / 300;
+ });
+}
+
+backgroundBlur();
diff --git a/assets/js/fetch-repo.js b/assets/js/fetch-repo.js
new file mode 100644
index 00000000..c7ad744e
--- /dev/null
+++ b/assets/js/fetch-repo.js
@@ -0,0 +1,30 @@
+function fetchRepo() {
+ const script = document.currentScript;
+ const repoURL = script && script.getAttribute("data-url") ? script.getAttribute("data-url")
+ : (console.error("data-url is null"), null);
+ const repoId = script && script.getAttribute("data-id") ? script.getAttribute("data-id")
+ : (console.error("data-id is null"), null);
+ const requestObjects =
+ repoId.startsWith("github") ? ["full_name", "description", "stargazers_count", "forks"]
+ : repoId.startsWith("gitlab") ? ["name_with_namespace", "description", "star_count", "forks_count"]
+ : ["full_name", "description", "stars_count", "forks_count"];
+ fetch(repoURL, {
+ headers: new Headers({
+ "User-agent": "Mozilla/4.0 Custom User Agent"
+ })
+ })
+ .then((response) => response.json())
+ .then((data) => {
+ requestObjects.forEach((requestObject) => {
+ let element = document.getElementById(`${repoId}-${requestObject}`);
+ if (requestObject === "stargazers_count" && repoId.startsWith("github")) {
+ element = document.getElementById(`${repoId}-stargazers`);
+ }
+ element ? (element.innerHTML = data[requestObject])
+ : (console.error(`element.innerHTML for '${repoId}-${requestObject}' is null`), null);
+ });
+ })
+ .catch((error) => console.error(error));
+}
+
+fetchRepo();
diff --git a/assets/js/page.js b/assets/js/page.js
index e3cb9794..0aef831e 100644
--- a/assets/js/page.js
+++ b/assets/js/page.js
@@ -1,15 +1,17 @@
-var liked_page = false
-var id = oid ? oid.replaceAll("/", "-") : oid
-var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
+const pageScriptElement = document.currentScript;
+const oid = pageScriptElement && pageScriptElement.getAttribute("data-oid") ? pageScriptElement.getAttribute("data-oid") : (console.error("data-oid is null"), null);
+const oid_likes = pageScriptElement && pageScriptElement.getAttribute("data-oid-likes") ? pageScriptElement.getAttribute("data-oid-likes") : (console.error("data-oid-likes is null"), null);
+const liked_page = false;
+const id = oid ? oid.replaceAll("/", "-") : oid;
+const id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes;
-if (typeof auth !== 'undefined') {
-
- var viewed = localStorage.getItem(id);
+if (typeof auth !== "undefined") {
+ const viewed = localStorage.getItem(id);
if (!viewed) {
auth.signInAnonymously()
.then(() => {
- var docRef = db.collection('views').doc(id)
+ const docRef = db.collection('views').doc(id)
localStorage.setItem(id, true);
docRef.get().then((doc) => {
if (doc.exists) {
@@ -24,13 +26,13 @@ if (typeof auth !== 'undefined') {
});
})
.catch((error) => {
- var errorCode = error.code;
- var errorMessage = error.message;
+ const errorCode = error.code;
+ const errorMessage = error.message;
console.error(errorCode, errorMessage)
});
}
- var liked = localStorage.getItem(id_likes);
+ const liked = localStorage.getItem(id_likes);
if (liked) {
liked_page = true
@@ -44,7 +46,7 @@ if (typeof auth !== 'undefined') {
function like_article(id_likes) {
auth.signInAnonymously()
.then(() => {
- var docRef = db.collection('likes').doc(id_likes)
+ const docRef = db.collection('likes').doc(id_likes)
docRef.get().then((doc) => {
liked_page = true
localStorage.setItem(id_likes, true);
@@ -63,8 +65,8 @@ function like_article(id_likes) {
});
})
.catch((error) => {
- var errorCode = error.code;
- var errorMessage = error.message;
+ const errorCode = error.code;
+ const errorMessage = error.message;
console.error(errorCode, errorMessage)
});
}
@@ -72,7 +74,7 @@ function like_article(id_likes) {
function remove_like_article(id_likes) {
auth.signInAnonymously()
.then(() => {
- var docRef = db.collection('likes').doc(id_likes)
+ const docRef = db.collection('likes').doc(id_likes)
docRef.get().then((doc) => {
liked_page = false
localStorage.removeItem(id_likes);
@@ -91,8 +93,8 @@ function remove_like_article(id_likes) {
});
})
.catch((error) => {
- var errorCode = error.code;
- var errorMessage = error.message;
+ const errorCode = error.code;
+ const errorMessage = error.message;
console.error(errorCode, errorMessage)
});
}
@@ -103,4 +105,4 @@ function process_article() {
} else {
remove_like_article(id_likes)
}
-}
\ No newline at end of file
+}
diff --git a/layouts/_default/list.html b/layouts/_default/list.html
index d236e9b0..6533b347 100644
--- a/layouts/_default/list.html
+++ b/layouts/_default/list.html
@@ -26,13 +26,9 @@
{{ $lang := print "." .Lang ".md" }}
{{ $path = replace $path $lang ".md" }}
{{end}}
-
{{ $jsPage := resources.Get "js/page.js" }}
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint ($.Site.Params.fingerprintAlgorithm | default "sha512") }}
-
+
{{ end }}