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;
});
});