Refactoring credit cards interface, and backend logic

This commit is contained in:
Rob Harrington
2017-05-26 17:16:07 +10:00
parent 778526af2e
commit f4c3fbf8bc
18 changed files with 169 additions and 108 deletions

View File

@@ -1,18 +1,12 @@
Darkswarm.controller "CreditCardsCtrl", ($scope, $timeout, CreditCard, savedCreditCards, StripeJS, Dates, Loading) ->
Darkswarm.controller "CreditCardsCtrl", ($scope, $timeout, CreditCard, CreditCards, StripeJS, Dates) ->
angular.extend(this, new FieldsetMixin($scope))
$scope.savedCreditCards = savedCreditCards
$scope.savedCreditCards = CreditCards.saved
$scope.CreditCard = CreditCard
$scope.secrets = CreditCard.secrets
$scope.showForm = CreditCard.show
$scope.storeCard = CreditCard.requestToken
$scope.allow_name_change = true
$scope.disable_fields = false
$scope.months = Dates.months
$scope.years = Dates.years
$scope.secrets = CreditCard.secrets
$scope.add_card_visible = false
$scope.storeCard = =>
CreditCard.requestToken($scope.secrets)
$scope.toggle = ->
$scope.add_card_visible = !($scope.add_card_visible)

View File

@@ -1,20 +1,21 @@
Darkswarm.factory 'CreditCard', ($injector, $rootScope, StripeJS, Navigation, $http, RailsFlashLoader, Loading)->
Darkswarm.factory 'CreditCard', ($injector, $rootScope, CreditCards, StripeJS, Navigation, $http, RailsFlashLoader, Loading)->
new class CreditCard
visible: false
errors: {}
secrets: {}
requestToken: (secrets) ->
secrets.name = @full_name(secrets)
StripeJS.requestToken(secrets, @submit, t("saving_credit_card"))
requestToken: =>
@setFullName()
StripeJS.requestToken(@secrets, @submit, t("saving_credit_card"))
submit: =>
params = @process_params()
$http.put('/credit_cards/new_from_token', params )
.success (data, status) ->
$rootScope.$apply ->
Loading.clear()
Navigation.go '/account'
.error (response, status) ->
.success (data, status) =>
Loading.clear()
@reset()
CreditCards.add(data)
.error (response, status) =>
if response.path
Navigation.go response.path
else
@@ -22,8 +23,8 @@ Darkswarm.factory 'CreditCard', ($injector, $rootScope, StripeJS, Navigation, $h
@errors = response.errors
RailsFlashLoader.loadFlash(response.flash)
full_name: (secrets) ->
secrets.first_name + " " + secrets.last_name
setFullName: ->
@secrets.name = "#{@secrets.first_name} #{@secrets.last_name}"
process_params: ->
{"exp_month": @secrets.card.exp_month,
@@ -31,3 +32,10 @@ Darkswarm.factory 'CreditCard', ($injector, $rootScope, StripeJS, Navigation, $h
"last4": @secrets.card.last4,
"token": @secrets.token,
"cc_type": @secrets.card.brand}
show: => @visible = true
reset: =>
@visible = false
delete @secrets[k] for k, v of @secrets
delete @errors[k] for k, v of @errors

View File

@@ -0,0 +1,6 @@
Darkswarm.factory 'CreditCards', (savedCreditCards)->
new class CreditCard
saved: savedCreditCards
add: (card) ->
@saved.push card

View File

@@ -21,3 +21,6 @@ Darkswarm.factory 'Navigation', ($location, $window) ->
$window.location.href = path
else
$window.location.pathname = path
reload: ->
$window.location.reload()