mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-24 01:13:21 +00:00
Refactoring credit cards interface, and backend logic
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
Darkswarm.factory 'CreditCards', (savedCreditCards)->
|
||||
new class CreditCard
|
||||
saved: savedCreditCards
|
||||
|
||||
add: (card) ->
|
||||
@saved.push card
|
||||
@@ -21,3 +21,6 @@ Darkswarm.factory 'Navigation', ($location, $window) ->
|
||||
$window.location.href = path
|
||||
else
|
||||
$window.location.pathname = path
|
||||
|
||||
reload: ->
|
||||
$window.location.reload()
|
||||
|
||||
Reference in New Issue
Block a user