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 %} - +