mirror of https://github.com/espruino/BangleApps
Add 'update all' button (fix #237)
parent
5bf3bfbca6
commit
5fe7f48477
|
@ -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>
|
||||
|
|
40
js/index.js
40
js/index.js
|
@ -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");
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue