diff --git a/src/apps.js b/src/apps.js index 29832b2a7..d8ecd2f55 100644 --- a/src/apps.js +++ b/src/apps.js @@ -69,6 +69,7 @@ var addons = require('./addons.js'), split = require('split'), superagent = require('superagent'), taskmanager = require('./taskmanager.js'), + updateChecker = require('./updatechecker.js'), url = require('url'), util = require('util'), uuid = require('node-uuid'), @@ -683,6 +684,9 @@ function update(appId, data, auditSource, callback) { eventlog.add(eventlog.ACTION_APP_UPDATE, auditSource, { appId: appId, toManifest: manifest, fromManifest: app.manifest, force: data.force }); + // clear update indicator, if update fails, it will come back through the update checker + updateChecker.resetAppUpdateInfo(appId); + callback(null); }); }); diff --git a/src/updatechecker.js b/src/updatechecker.js index fa1db7941..ba0773ae3 100644 --- a/src/updatechecker.js +++ b/src/updatechecker.js @@ -5,7 +5,8 @@ exports = module.exports = { checkBoxUpdates: checkBoxUpdates, getUpdateInfo: getUpdateInfo, - resetUpdateInfo: resetUpdateInfo + resetUpdateInfo: resetUpdateInfo, + resetAppUpdateInfo: resetAppUpdateInfo }; var apps = require('./apps.js'), @@ -42,8 +43,17 @@ function getUpdateInfo() { } function resetUpdateInfo() { - gAppUpdateInfo = { }; gBoxUpdateInfo = null; + resetAppUpdateInfo(); +} + +// If no appId provided all apps are reset +function resetAppUpdateInfo(appId) { + if (!appId) { + gAppUpdateInfo = {}; + } else { + delete gAppUpdateInfo[appId]; + } } function getAppUpdate(app, callback) {