fix(dl): afficher les images de release et ouvrir la page de release

This commit is contained in:
2026-05-28 19:19:46 +02:00
parent 41c2c58dba
commit ec2c75de33
2 changed files with 58 additions and 6 deletions
+41 -6
View File
@@ -27,6 +27,42 @@
return entry?.name || entry?.tag_name || entry?.ref || "Sans nom";
}
function getReleasePageUrl(entry, mode) {
if (mode === "releases") {
return entry?.html_url || REPO_URL;
}
if (entry?.name) {
return `${REPO_URL}/releases/tag/${encodeURIComponent(entry.name)}`;
}
return REPO_URL;
}
function sanitizeReleaseHtml(html) {
const wrapper = document.createElement("div");
wrapper.innerHTML = html || "";
wrapper.querySelectorAll("script, iframe, object, embed, link, style").forEach((node) => node.remove());
wrapper.querySelectorAll("*").forEach((node) => {
Array.from(node.attributes).forEach((attribute) => {
const name = attribute.name.toLowerCase();
const value = attribute.value || "";
if (name.startsWith("on")) {
node.removeAttribute(attribute.name);
return;
}
if ((name === "href" || name === "src") && /^javascript:/i.test(value)) {
node.removeAttribute(attribute.name);
}
});
});
return wrapper.innerHTML;
}
function pickDirectDownloadUrl(release) {
const assets = Array.isArray(release?.assets) ? release.assets : [];
const isoAsset = assets.find((asset) => /\.iso$/i.test(asset?.name || ""));
@@ -79,9 +115,7 @@
li.className = "version-item";
const label = getReleaseLabel(entry);
const downloadUrl = mode === "releases"
? pickDirectDownloadUrl(entry)
: `https://github.com/${OWNER}/${REPO}/archive/refs/tags/${encodeURIComponent(entry.name)}.zip`;
const downloadUrl = getReleasePageUrl(entry, mode);
const published = formatDate(entry.published_at || entry.commit?.committer?.date);
li.innerHTML = `
@@ -129,9 +163,10 @@
if (currentVersionNode) currentVersionNode.textContent = latestLabel;
if (currentVersionDateNode) currentVersionDateNode.textContent = latestDate ? ` · ${latestDate}` : "";
if (currentReleaseNoteNode) {
currentReleaseNoteNode.textContent = latest.body || "Release GitHub la plus récente.";
const bodyHtml = sanitizeReleaseHtml(latest.body || "");
currentReleaseNoteNode.innerHTML = bodyHtml || "Release GitHub la plus récente.";
}
if (latestDownloadNode) latestDownloadNode.href = latestDownloadUrl;
if (latestDownloadNode) latestDownloadNode.href = latest.html_url || REPO_URL;
renderList(releases, "releases");
return;
@@ -146,7 +181,7 @@
if (Array.isArray(tags) && tags.length > 0) {
const latestTag = tags[0];
const latestLabel = getReleaseLabel(latestTag);
const latestDownloadUrl = `https://github.com/${OWNER}/${REPO}/archive/refs/tags/${encodeURIComponent(latestTag.name)}.zip`;
const latestDownloadUrl = `${REPO_URL}/releases/tag/${encodeURIComponent(latestTag.name)}`;
if (currentVersionNode) currentVersionNode.textContent = `${latestLabel} (tag)`;
if (currentVersionDateNode) currentVersionDateNode.textContent = "";