Skip to content

Commit 70dd9a3

Browse files
committed
refactors
1 parent 46bdd92 commit 70dd9a3

File tree

1 file changed

+44
-64
lines changed

1 file changed

+44
-64
lines changed

assets/js/downloadUtils.js

Lines changed: 44 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -247,74 +247,54 @@ export async function setupDownloadButton() {
247247
const downloadParent = document.getElementById("downloads");
248248
const currentArch = getCurrentArch();
249249

250-
if (os && os !== OSEnum.UNDEFINED) {
251-
const releases = await getReleaseInfo(os, currentArch);
252-
const osReadable = getReaderFriendlyName(os);
253-
254-
if (releases.length === 1) {
255-
const release = releases[0];
256-
const buttonTemplate = document.getElementById(
257-
"download-template-single",
258-
).content;
259-
const clone = buttonTemplate.cloneNode(true);
260-
const button = clone.getElementById("download-button");
261-
262-
button.title = button.title.replace("${os}", osReadable);
263-
button.innerHTML = button.innerHTML.replace(
264-
"${version}",
265-
`${release.version}`,
266-
);
267-
button.id = `${release.version} ${release.ext}`;
268-
269-
clone.getElementById("download-icon").classList.add(getIconClass(os));
270-
callElemMethod(
271-
"downloads",
272-
"appendChild",
273-
document.importNode(clone, true),
274-
);
275-
276-
document.getElementById(`${release.version} ${release.ext}`).onclick =
277-
() => window.open(release.url);
278-
}
279-
280-
if (releases.length > 1) {
281-
const buttonTemplate = document.getElementById(
282-
"download-template-multi",
283-
).content;
284-
const clone = buttonTemplate.cloneNode(true);
285-
286-
const downloadText = clone.getElementById("download-text");
287-
downloadText.innerHTML = downloadText.innerHTML
288-
.replace("${version}", releases[0].version)
289-
.replace("${os}", osReadable);
290-
291-
callElemMethod(
292-
"downloads",
293-
"appendChild",
294-
document.importNode(clone, true),
295-
);
296-
const optionsContainer = document.getElementById("options-container");
297-
298-
for (const release of releases) {
299-
const optionDiv = document.createElement("div");
300-
optionDiv.classList.add("option");
301-
optionDiv.innerHTML = `${getSanitizedName(release)}`;
302-
optionsContainer.appendChild(optionDiv);
303-
304-
optionDiv.onclick = () => window.open(release.url);
305-
}
306-
307-
const selected = document.querySelector(".selected");
308-
309-
selected.addEventListener("click", () => {
310-
optionsContainer.classList.toggle("options__active");
311-
});
312-
}
313-
} else {
250+
if (!(os && os !== OSEnum.UNDEFINED)) {
314251
setElemProperty(
315252
"downloads",
316253
"innerHTML",
317254
"Sorry Moosync is not available for your platform yet",
318255
);
256+
return;
319257
}
258+
259+
const releases = await getReleaseInfo(os, currentArch);
260+
const osReadable = getReaderFriendlyName(os);
261+
262+
if (releases.length === 0) return;
263+
264+
if (releases.length === 1) {
265+
const release = releases[0];
266+
const clone = document.getElementById("download-template-single").content.cloneNode(true);
267+
const button = clone.getElementById("download-button");
268+
269+
button.title = button.title.replace("${os}", osReadable);
270+
button.innerHTML = button.innerHTML.replace("${version}", `${release.version}`);
271+
button.id = `${release.version} ${release.ext}`;
272+
clone.getElementById("download-icon").classList.add(getIconClass(os));
273+
274+
callElemMethod("downloads", "appendChild", document.importNode(clone, true));
275+
document.getElementById(button.id).onclick = () => window.open(release.url);
276+
return;
277+
}
278+
279+
// Multi-release UI
280+
const clone = document.getElementById("download-template-multi").content.cloneNode(true);
281+
const downloadText = clone.getElementById("download-text");
282+
downloadText.innerHTML = downloadText.innerHTML
283+
.replace("${version}", releases[0].version)
284+
.replace("${os}", osReadable);
285+
286+
callElemMethod("downloads", "appendChild", document.importNode(clone, true));
287+
const optionsContainer = document.getElementById("options-container");
288+
289+
releases.forEach(release => {
290+
const optionDiv = document.createElement("div");
291+
optionDiv.classList.add("option");
292+
optionDiv.innerHTML = getSanitizedName(release);
293+
optionDiv.onclick = () => window.open(release.url);
294+
optionsContainer.appendChild(optionDiv);
295+
});
296+
297+
document.querySelector(".selected").addEventListener("click", () => {
298+
optionsContainer.classList.toggle("options__active");
299+
});
320300
}

0 commit comments

Comments
 (0)