Add 'update all' button (fix #237)

pull/318/head^2
Gordon Williams 2020-04-20 10:07:55 +01:00
parent 5bf3bfbca6
commit 5fe7f48477
2 changed files with 39 additions and 4 deletions

View File

@ -113,6 +113,7 @@
<div class="panel">
<div class="panel-header" style="text-align:right">
<button class="btn refresh">Refresh...</button>
<button class="btn btn-primary updateapps hidden">Update X apps</button>
</div>
<div class="panel-body columns"><!-- apps go here --></div>
</div>

View File

@ -401,10 +401,18 @@ function showLoadingIndicator(id) {
panelbody.innerHTML = '<div class="tile column col-12"><div class="tile-content" style="min-height:48px;"><div class="loading loading-lg"></div></div></div>';
}
function getAppsToUpdate() {
var appsToUpdate = [];
appsInstalled.forEach(appInstalled => {
var app = appNameToApp(appInstalled.id);
if (app.version != appInstalled.version)
appsToUpdate.push(app);
});
return appsToUpdate;
}
function refreshMyApps() {
var panelbody = document.querySelector("#myappscontainer .panel-body");
var tab = document.querySelector("#tab-myappscontainer a");
tab.setAttribute("data-badge", appsInstalled.length);
panelbody.innerHTML = appsInstalled.map(appInstalled => {
var app = appNameToApp(appInstalled.id);
var version = getVersionInfo(app, appInstalled);
@ -436,6 +444,17 @@ return `<div class="tile column col-6 col-sm-12 col-xs-12">
if (icon.classList.contains("icon-download")) handleAppInterface(app);
});
});
var appsToUpdate = getAppsToUpdate();
var tab = document.querySelector("#tab-myappscontainer a");
var updateApps = document.querySelector("#myappscontainer .updateapps");
if (appsToUpdate.length) {
updateApps.innerHTML = `Update ${appsToUpdate.length} apps`;
updateApps.classList.remove("hidden");
tab.setAttribute("data-badge", `${appsInstalled.length}${appsToUpdate.length}`);
} else {
updateApps.classList.add("hidden");
tab.setAttribute("data-badge", appsInstalled.length);
}
}
let haveInstalledApps = false;
@ -471,6 +490,22 @@ htmlToArray(document.querySelectorAll(".btn.refresh")).map(button => button.addE
showToast("Getting app list failed, "+err,"error");
});
}));
htmlToArray(document.querySelectorAll(".btn.updateapps")).map(button => button.addEventListener("click", () => {
var appsToUpdate = getAppsToUpdate();
var count = appsToUpdate.length;
function updater() {
if (!appsToUpdate.length) return;
var app = appsToUpdate.pop();
return updateApp(app).then(function() {
return updater();
});
}
updater().then(err => {
showToast(`Updated ${count} apps`,"success");
}).catch(err => {
showToast("Update failed, "+err,"error");
});
}));
connectMyDeviceBtn.addEventListener("click", () => {
if (connectMyDeviceBtn.classList.contains('is-connected')) {
Comms.disconnectDevice();
@ -621,4 +656,3 @@ document.getElementById("installfavourite").addEventListener("click",event=>{
showToast("App Install failed, "+err,"error");
});
});