diff --git a/static/js/app.js b/static/js/app.js
index c832be465..8fb7773be 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -212,23 +212,31 @@ quayApp = angular.module('quay', ['restangular', 'angularMoment', 'angulartics',
createSubscriptionRequest.customPUT(subscriptionDetails).then(success, failure);
};
- planService.changePlan = function($scope, orgname, planId, hasExistingSubscription, started, success, failure) {
+ planService.changePlan = function($scope, orgname, planId, hasExistingSubscription, callbacks) {
if (!hasExistingSubscription) {
- planService.showSubscribeDialog($scope, orgname, planId, started, success, failure);
+ planService.showSubscribeDialog($scope, orgname, planId, callbacks);
return;
}
- started();
- planService.setSubscription(orgname, planId, success, failure);
+ if (callbacks['started']) {
+ callbacks['started']();
+ }
+ planService.setSubscription(orgname, planId, callbacks['success'], callbacks['failure']);
};
- planService.showSubscribeDialog = function($scope, orgname, planId, started, success, failure) {
+ planService.showSubscribeDialog = function($scope, orgname, planId, callbacks) {
+ if (callbacks['opening']) {
+ callbacks['opening']();
+ }
+
var submitToken = function(token) {
mixpanel.track('plan_subscribe');
$scope.$apply(function() {
- started();
- planService.setSubscription(orgname, planId, success, failure);
+ if (callbacks['started']) {
+ callbacks['started']();
+ }
+ planService.setSubscription(orgname, planId, callbacks['success'], callbacks['failure']);
});
};
@@ -255,7 +263,9 @@ quayApp = angular.module('quay', ['restangular', 'angularMoment', 'angulartics',
description: 'Up to ' + planDetails.privateRepos + ' private repositories',
panelLabel: 'Subscribe',
token: submitToken,
- image: 'static/img/quay-icon-stripe.png'
+ image: 'static/img/quay-icon-stripe.png',
+ opened: function() { $scope.$apply(function() { callbacks['opened']() }); },
+ closed: function() { $scope.$apply(function() { callbacks['closed']() }); }
});
});
};
@@ -629,16 +639,16 @@ quayApp.directive('planManager', function () {
$scope.changeSubscription = function(planId) {
if ($scope.planChanging) { return; }
- PlanService.changePlan($scope, $scope.organization, planId, hasSubscription, function() {
- // Started.
- $scope.planChanging = true;
- }, function(sub) {
- // Success.
- subscribedToPlan(sub);
- }, function() {
- // Failure.
- $scope.planChanging = false;
- });
+ var callbacks = {
+ 'opening': function() { $scope.planChanging = true; },
+ 'started': function() { $scope.planChanging = true; },
+ 'opened': function() { $scope.planChanging = true; },
+ 'closed': function() { $scope.planChanging = false; },
+ 'success': subscribedToPlan,
+ 'failure': function() { $scope.planChanging = false; }
+ };
+
+ PlanService.changePlan($scope, $scope.organization, planId, hasSubscription, callbacks);
};
$scope.cancelSubscription = function() {
diff --git a/static/js/controllers.js b/static/js/controllers.js
index 39784f77b..456c1ebe6 100644
--- a/static/js/controllers.js
+++ b/static/js/controllers.js
@@ -1038,17 +1038,14 @@ function NewRepoCtrl($scope, $location, $http, $timeout, UserService, Restangula
};
$scope.upgradePlan = function() {
- PlanService.changePlan($scope, null, $scope.planRequired.stripeId, null, function() {
- // Subscribing.
- $scope.planChanging = true;
- }, function(plan) {
- // Subscribed.
- subscribedToPlan(plan);
- }, function() {
- // Failure.
- $('#couldnotsubscribeModal').modal();
- $scope.planChanging = false;
- });
+ var callbacks = {
+ 'opened': function() { $scope.planChanging = true; },
+ 'closed': function() { $scope.planChanging = false; },
+ 'success': subscribedToPlan,
+ 'failure': function() { $('#couldnotsubscribeModal').modal(); $scope.planChanging = false; }
+ };
+
+ PlanService.changePlan($scope, null, $scope.planRequired.stripeId, null, callbacks);
};
// Watch the namespace on the repo. If it changes, we update the plan and the public/private
@@ -1364,24 +1361,25 @@ function NewOrgCtrl($scope, $routeParams, $timeout, $location, UserService, Plan
// Reset the organizations list.
UserService.load();
+ var showOrg = function() {
+ $location.path('/organization/' + org.name + '/');
+ };
+
// If the selected plan is free, simply move to the org page.
if ($scope.currentPlan.price == 0) {
- $location.path('/organization/' + org.name + '/');
+ showOrg();
return;
}
// Otherwise, show the subscribe for the plan.
- PlanService.changePlan($scope, org.name, $scope.currentPlan.stripeId, false, function() {
- // Started.
- $scope.creating = true;
- }, function(sub) {
- // Success.
- $location.path('/organization/' + org.name + '/');
- }, function() {
- // Failure.
- $location.path('/organization/' + org.name + '/');
- });
+ var callbacks = {
+ 'opened': function() { $scope.creating = true; },
+ 'closed': showOrg,
+ 'success': showOrg,
+ 'failure': showOrg
+ };
+ PlanService.changePlan($scope, org.name, $scope.currentPlan.stripeId, false, callbacks);
}, function(result) {
$scope.creating = false;
$scope.createError = result.data.message || result.data;
diff --git a/templates/index.html b/templates/index.html
index 22e993024..00c387d59 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -16,7 +16,7 @@
{% endblock %}
{% block added_dependencies %}
-
+