mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-09-27 20:11:15 +02:00
82 lines
2.7 KiB
JavaScript
82 lines
2.7 KiB
JavaScript
async function initUpdateUI() {
|
|
const container = document.getElementById("updateAvailable");
|
|
|
|
const hasUpdate = await window.electronAPI.isUpdateAvailable();
|
|
if (hasUpdate) {
|
|
setupAndShowUpdateUI();
|
|
}
|
|
|
|
window.electronAPI.onUpdateAvailable((info) => {
|
|
setupAndShowUpdateUI(info);
|
|
});
|
|
|
|
function setupAndShowUpdateUI(info) {
|
|
container.style.display = "block";
|
|
|
|
const btn = document.getElementById("btn-update");
|
|
const icon = document.getElementById("update-icon");
|
|
const title = document.getElementById("update-title");
|
|
const sub = document.getElementById("update-sub");
|
|
const progressWrap = document.getElementById("progress-wrap");
|
|
const progressFill = document.getElementById("progress-fill");
|
|
const progressPct = document.getElementById("progress-pct");
|
|
const progressEta = document.getElementById("progress-eta");
|
|
|
|
if (info && info.version) {
|
|
sub.textContent = `A new version (${info.version}) is ready`;
|
|
}
|
|
|
|
if (info && info.environment && info.environment !== "auto") {
|
|
icon.textContent = "open_in_new";
|
|
|
|
if (info.environment === "snap") {
|
|
sub.textContent = `Version ${info.version} is out. Use the Snap Store or run "snap refresh".`;
|
|
btn.textContent = "View Release";
|
|
} else {
|
|
sub.textContent = `Version ${info.version} is out. Update via your package manager or download it manually.`;
|
|
btn.textContent = "Download manually";
|
|
}
|
|
|
|
btn.onclick = () => {
|
|
window.electronAPI.openReleasePage();
|
|
container.style.display = "none";
|
|
};
|
|
|
|
return;
|
|
}
|
|
|
|
btn.onclick = () => {
|
|
window.electronAPI.downloadUpdate();
|
|
btn.disabled = true;
|
|
btn.textContent = "Downloading...";
|
|
icon.textContent = "download";
|
|
title.textContent = "Downloading update";
|
|
progressWrap.style.display = "flex";
|
|
};
|
|
|
|
window.electronAPI.onDownloadProgress((progress) => {
|
|
const pct = Math.round(progress.percent);
|
|
progressFill.style.width = pct + "%";
|
|
progressPct.textContent = pct + "%";
|
|
|
|
const remaining = (progress.total - progress.transferred) / progress.bytesPerSecond;
|
|
progressEta.textContent =
|
|
remaining > 0 ? `~${Math.ceil(remaining)}s left` : "almost done";
|
|
});
|
|
|
|
window.electronAPI.onUpdateDownloaded(() => {
|
|
progressFill.style.width = "100%";
|
|
progressPct.textContent = "100%";
|
|
progressEta.textContent = "Done";
|
|
icon.textContent = "check";
|
|
title.textContent = "Ready to install";
|
|
sub.textContent = "Restart to apply the update";
|
|
btn.textContent = "Restart";
|
|
btn.disabled = false;
|
|
btn.onclick = () => window.electronAPI.installUpdate();
|
|
});
|
|
}
|
|
}
|
|
|
|
initUpdateUI();
|