diff --git a/app/app.js b/app/app.js index 3fc7e473..a94c22a7 100644 --- a/app/app.js +++ b/app/app.js @@ -4,6 +4,7 @@ const { dialog } = require("electron"); const updater = require("electron-updater"); const autoUpdater = updater.autoUpdater; const contextMenu = require("electron-context-menu"); +const ProgressBar = require("electron-progressbar"); const path = require("path"); // Attach settings store @@ -26,12 +27,44 @@ autoUpdater.on("update-available", function(info) { }, buttonIndex => { if (buttonIndex === 0) { - autoUpdater.downloadUpdate(); + console.log("Downloading update selected"); + handleDownloadUpdate(); } } ); }); +// Download, with a progress bar +function handleDownloadUpdate() { + console.log("Downloading update"); + var progressBar = new ProgressBar({ + indeterminate: false, + text: "Downloading update...", + detail: "Please wait...", + browserWindow: { + webPreferences: { + nodeIntegration: true + } + } + }); + + progressBar.on("ready", function() { + autoUpdater.on("download-progress", function(info) { + progressBar.value = info.percent; + progressBar.detail = `${Math.floor(info.percent)}% ${info.bytesPerSecond / + 1000}kb/s`; + }); + autoUpdater.on("update-downloaded", function() { + progressBar.close(); + }); + autoUpdater.on("error", function() { + progressBar.close(); + }); + autoUpdater.downloadUpdate(); + }); +} + +// Trigger update installation autoUpdater.on("update-downloaded", function(info) { sendStatusToWindow("Update downloaded." + info); dialog.showMessageBox( diff --git a/package-lock.json b/package-lock.json index bd07ec56..0c27f894 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "openflexure-ev", - "version": "2.0.0-beta.6", + "version": "2.1.0-alpha", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -7168,6 +7168,14 @@ "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz", "integrity": "sha512-Z1qA/1oHNowGtSBIcWk0pcLEqYT/j+13xUw/MYOrBUOL4X7VN0i0KCTf5SqyvMPmW5pSPKbo28wkxMxzZ20YnQ==" }, + "electron-progressbar": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/electron-progressbar/-/electron-progressbar-1.2.0.tgz", + "integrity": "sha512-I89HaI61SF5wl8c4p62UU3RXhL0xByzl4XH/miwb1e/VNUtRj5WCe/wJ5pNikfC01+/4aAOlNsbmkfsvQjtW6Q==", + "requires": { + "extend": "^3.0.1" + } + }, "electron-publish": { "version": "21.2.0", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz", @@ -8018,8 +8026,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", diff --git a/package.json b/package.json index d33bc597..bd1e65ae 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "about-window": "^1.13.2", "custom-electron-titlebar": "^3.2.2", "electron-context-menu": "^0.15.2", + "electron-progressbar": "^1.2.0", "electron-store": "^5.1.1", "electron-updater": "^4.2.2", "material-design-icons": "^3.0.1"