diff --git a/src/views/addons.html b/src/views/addons.html index 99cc3925e..8f6e76be4 100644 --- a/src/views/addons.html +++ b/src/views/addons.html @@ -79,7 +79,7 @@ - + @@ -92,7 +92,7 @@ - + diff --git a/src/views/addons.js b/src/views/addons.js index 09530c9c1..87fd8c713 100644 --- a/src/views/addons.js +++ b/src/views/addons.js @@ -9,11 +9,14 @@ angular.module('Application').controller('AddonsController', ['$scope', '$locati $scope.ready = false; $scope.addons = {}; - function refresh(addonName) { - Client.getAddon(addonName, function (error, result) { - if (error) return Client.error(error); + function refresh(addonName, callback) { + callback = callback || function () {}; - $scope.addons[addonName] = result; + Client.getAddon(addonName, function (error, result) { + if (error) Client.error(error); + else $scope.addons[addonName] = result; + + callback(); }); } @@ -24,10 +27,18 @@ angular.module('Application').controller('AddonsController', ['$scope', '$locati } $scope.restartAddon = function (addonName) { + function waitForActive(addonName) { + refresh(addonName, function () { + if ($scope.addons[addonName].status === 'active') return; + + setTimeout(function () { waitForActive(addonName); }, 1000); + }); + } + Client.restartAddon(addonName, function (error) { if (error) return Client.error(error); - refresh(addonName); + waitForActive(addonName); }); }; @@ -71,13 +82,12 @@ angular.module('Application').controller('AddonsController', ['$scope', '$locati return; } - // reload the addon refresh($scope.addonConfigure.addon.name); $('#addonConfigureModal').modal('hide'); $scope.addonConfigure.reset(); }); - } + }, reset: function () { $scope.addonConfigure.busy = false; @@ -103,8 +113,6 @@ angular.module('Application').controller('AddonsController', ['$scope', '$locati // just kick off the status fetching refreshAll(); - $interval(refreshAll, 5000); - $scope.ready = true; }); });