mirror of
https://seed.radicle.dev/rad:z371PVmDHdjJucejRoRYJcDEvD5pp.git
synced 2026-10-18 19:10:34 +08:00
perf: Move Scripts to Head and Defer
This commit is contained in:
@@ -21,24 +21,7 @@
|
||||
</span>
|
||||
</blockquote>
|
||||
|
||||
<script defer src="{{ '/assets/js/latest-release.js' | relative_url }}"></script>
|
||||
<script>
|
||||
const release = document.getElementById('release');
|
||||
|
||||
fetch("https://files.radicle.dev/releases/latest/radicle.json")
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.timestamp === "{{ site.data.releases.radicle.timestamp }}") {
|
||||
console.info("Release data is up to date.")
|
||||
return;
|
||||
}
|
||||
|
||||
const version = data.version;
|
||||
const commit = data.commit;
|
||||
const release = document.getElementById("release");
|
||||
const releaseInfo = document.getElementById("release-info");
|
||||
|
||||
releaseInfo.innerText = `Radicle ${version}`;
|
||||
document.getElementById("release-commit").innerText = commit;
|
||||
document.getElementById("release-timestamp").innerText = `(${new Date(data.timestamp * 1000).toISOString()})`;
|
||||
});
|
||||
</script>
|
||||
document.addEventListener('DOMContentLoaded', () => updateLatestRelease("{{ site.data.releases.radicle.timestamp }}"));
|
||||
</script>
|
||||
+5
-16
@@ -2,13 +2,17 @@
|
||||
<html>
|
||||
<head>
|
||||
{% include meta.html %}
|
||||
<link rel="stylesheet" type="text/css" href="{{ "/assets/css/page.css" | relative_url }}"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{ '/assets/css/page.css' | relative_url }}"/>
|
||||
<meta rel="me" href="{{ '@radicle@toot.radicle.xyz' | fedi_to_https }}" /><!-- old account -->
|
||||
<meta rel="me" href="{{ site.fedi | fedi_to_https }}" />
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS Feed for the Radicle Website" href="/feed.xml" />
|
||||
{% for url in page.preconnect %}
|
||||
<link rel="preconnect" href="{{ url }}" />
|
||||
{% endfor %}
|
||||
{% for script in page.scripts %}
|
||||
<script defer src="{{ script | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
|
||||
{% endfor %}
|
||||
<script defer src="{{ 'toggle-theme' | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
|
||||
</head>
|
||||
<body>
|
||||
<img class="desktop" width="160" height="160" id="ribbon" src="/assets/images/ribbon.svg" usemap="#ribbon-map"/>
|
||||
@@ -37,20 +41,5 @@
|
||||
{{ content }}
|
||||
</main>
|
||||
{% include fixed.html %}
|
||||
<script src="{{ "/assets/js/toggle-theme.js" | relative_url }}"></script>
|
||||
<script>
|
||||
const copyButton = document.getElementById("install");
|
||||
const copyResult = document.getElementById("install-copy");
|
||||
const textToCopy = document.getElementById("install-command").innerText;
|
||||
|
||||
copyButton.addEventListener("click", async function () {
|
||||
try {
|
||||
await navigator.clipboard.writeText(textToCopy);
|
||||
copyResult.innerText = "copied";
|
||||
} catch (err) {
|
||||
console.error("Failed to copy text: ", err);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+4
-1
@@ -6,6 +6,10 @@
|
||||
{% for url in page.preconnect %}
|
||||
<link rel="preconnect" href="{{ url }}" />
|
||||
{% endfor %}
|
||||
{% for script in page.scripts %}
|
||||
<script defer src="{{ script | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
|
||||
{% endfor %}
|
||||
<script defer src="{{ 'toggle-theme' | prepend: '/assets/js/' | append: '.js' | relative_url }}"></script>
|
||||
</head>
|
||||
<body class="{{ page.variant }}">
|
||||
{% include header.html %}
|
||||
@@ -13,6 +17,5 @@
|
||||
{{ content }}
|
||||
</main>
|
||||
{% include fixed.html %}
|
||||
<script src="{{ "/assets/js/toggle-theme.js" | relative_url }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+8
-43
@@ -6,6 +6,8 @@ binary: ["unknown-linux-musl", "apple-darwin"]
|
||||
arch: ["x86_64", "aarch64"]
|
||||
preconnect:
|
||||
- https://files.radicle.dev
|
||||
scripts:
|
||||
- download
|
||||
---
|
||||
This is Radicle's <strong class="highlight">download</strong> page,
|
||||
which references various ways of downloading Radicle to your machine.
|
||||
@@ -170,46 +172,9 @@ This will place binaries in `~/.radicle/bin` and manuals in `~/.radicle/man`,
|
||||
and overwrite any existing Radicle binaries.
|
||||
|
||||
<script>
|
||||
{% for release in site.releases %}
|
||||
getRelease("{{ release.name }}", "{{ release.base }}", "{{ release.id }}", "{{ site.data.releases[release.id].timestamp }}");
|
||||
{% endfor %}
|
||||
|
||||
function getRelease(name, urlBase, releaseId, knownTimestamp) {
|
||||
const releases = document.getElementById(`${releaseId}-releases`);
|
||||
|
||||
fetch(`${urlBase}/${releaseId}.json`)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.timestamp === knownTimestamp) {
|
||||
console.info(`Release data for ${name} is up to date.`)
|
||||
return;
|
||||
}
|
||||
|
||||
const version = data.version;
|
||||
const commit = data.commit;
|
||||
const release = document.getElementById(`${releaseId}-release-header`);
|
||||
const releaseName = document.getElementById(`${releaseId}-release-name`);
|
||||
const releaseInfo = document.getElementById(`${releaseId}-release-info`);
|
||||
|
||||
document.querySelectorAll(`#${releaseId}-releases [data-release-binary]`).forEach((row) => {
|
||||
const arch = row.dataset.releaseArch;
|
||||
const binary = row.dataset.releaseBinary;
|
||||
const archive = `${releaseId}-${version}-${arch}-${binary}.tar.xz`;
|
||||
const url = `${urlBase}/${archive}`;
|
||||
|
||||
row.querySelector(".release-arch").innerText = arch;
|
||||
row.querySelector(".release-url").innerText = archive;
|
||||
row.querySelector(".release-sig").innerText = ".sig";
|
||||
row.querySelector(".release-checksum").innerText = ".sha256";
|
||||
|
||||
row.querySelector(".release-url").href = url;
|
||||
row.querySelector(".release-sig").href = `${url}.sig`;
|
||||
row.querySelector(".release-checksum").href = `${url}.sha256`;
|
||||
});
|
||||
|
||||
release.classList.remove("loading");
|
||||
releaseName.innerText = `${name} ${version}`;
|
||||
releaseInfo.innerHTML = `Built from commit <code>${commit}</code> on ${new Date(data.timestamp * 1000).toISOString()}.`;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
{% for release in site.releases %}
|
||||
getRelease("{{ release.name }}", "{{ release.base }}", "{{ release.id }}", "{{ site.data.releases[release.id].timestamp }}");
|
||||
{% endfor %}
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,12 @@
|
||||
const copyButton = document.getElementById("install");
|
||||
const copyResult = document.getElementById("install-copy");
|
||||
const textToCopy = document.getElementById("install-command").innerText;
|
||||
|
||||
copyButton.addEventListener("click", async function () {
|
||||
try {
|
||||
await navigator.clipboard.writeText(textToCopy);
|
||||
copyResult.innerText = "copied";
|
||||
} catch (err) {
|
||||
console.error("Failed to copy text: ", err);
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,38 @@
|
||||
function getRelease(name, urlBase, releaseId, knownTimestamp) {
|
||||
const releases = document.getElementById(`${releaseId}-releases`);
|
||||
|
||||
fetch(`${urlBase}/${releaseId}.json`)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.timestamp === knownTimestamp) {
|
||||
console.info(`Release data for ${name} is up to date.`)
|
||||
return;
|
||||
}
|
||||
|
||||
const version = data.version;
|
||||
const commit = data.commit;
|
||||
const release = document.getElementById(`${releaseId}-release-header`);
|
||||
const releaseName = document.getElementById(`${releaseId}-release-name`);
|
||||
const releaseInfo = document.getElementById(`${releaseId}-release-info`);
|
||||
|
||||
document.querySelectorAll(`#${releaseId}-releases [data-release-binary]`).forEach((row) => {
|
||||
const arch = row.dataset.releaseArch;
|
||||
const binary = row.dataset.releaseBinary;
|
||||
const archive = `${releaseId}-${version}-${arch}-${binary}.tar.xz`;
|
||||
const url = `${urlBase}/${archive}`;
|
||||
|
||||
row.querySelector(".release-arch").innerText = arch;
|
||||
row.querySelector(".release-url").innerText = archive;
|
||||
row.querySelector(".release-sig").innerText = ".sig";
|
||||
row.querySelector(".release-checksum").innerText = ".sha256";
|
||||
|
||||
row.querySelector(".release-url").href = url;
|
||||
row.querySelector(".release-sig").href = `${url}.sig`;
|
||||
row.querySelector(".release-checksum").href = `${url}.sha256`;
|
||||
});
|
||||
|
||||
release.classList.remove("loading");
|
||||
releaseName.innerText = `${name} ${version}`;
|
||||
releaseInfo.innerHTML = `Built from commit <code>${commit}</code> on ${new Date(data.timestamp * 1000).toISOString()}.`;
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
async function updateLatestRelease(knownTimestamp) {
|
||||
const release = document.getElementById('release');
|
||||
|
||||
fetch("https://files.radicle.dev/releases/latest/radicle.json")
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.timestamp === knownTimestamp) {
|
||||
console.info("Release data is up to date.")
|
||||
return;
|
||||
}
|
||||
|
||||
const version = data.version;
|
||||
const commit = data.commit;
|
||||
const release = document.getElementById("release");
|
||||
const releaseInfo = document.getElementById("release-info");
|
||||
|
||||
releaseInfo.innerText = `Radicle ${version}`;
|
||||
document.getElementById("release-commit").innerText = commit;
|
||||
document.getElementById("release-timestamp").innerText = `(${new Date(data.timestamp * 1000).toISOString()})`;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user