Support the additional stripe callbacks

This commit is contained in:
Joseph Schorr 2013-11-08 20:32:56 -05:00
parent 68e1658849
commit 0f473a3a82
3 changed files with 49 additions and 41 deletions

View file

@ -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() {

View file

@ -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;

View file

@ -16,7 +16,7 @@
{% endblock %}
{% block added_dependencies %}
<script src="https://checkout.stripe.com/v2/checkout.js"></script>
<script src="https://checkout.stripe.com/checkout.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/d3/3.3.3/d3.min.js"></script>