From c60dcc75cd919bd9fa0241ae296c42a5e838af9d Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Thu, 22 Oct 2020 13:40:36 -0700 Subject: [PATCH] confirm changes to default card --- .../credit_cards_controller.js.coffee | 2 +- .../darkswarm/services/credit_cards.js.coffee | 20 +++++++++++-------- app/views/spree/users/_saved_cards.html.haml | 2 +- config/locales/en.yml | 1 + 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee index 868057b22c..d079e15d93 100644 --- a/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee @@ -1,7 +1,7 @@ Darkswarm.controller "CreditCardsCtrl", ($scope, CreditCard, CreditCards) -> angular.extend(this, new FieldsetMixin($scope)) $scope.savedCreditCards = CreditCards.saved - $scope.setDefault = CreditCards.setDefault + $scope.confirmSetDefault = CreditCards.confirmSetDefault $scope.CreditCard = CreditCard $scope.secrets = CreditCard.secrets $scope.showForm = CreditCard.show diff --git a/app/assets/javascripts/darkswarm/services/credit_cards.js.coffee b/app/assets/javascripts/darkswarm/services/credit_cards.js.coffee index 6b68ef983f..87ab10e59c 100644 --- a/app/assets/javascripts/darkswarm/services/credit_cards.js.coffee +++ b/app/assets/javascripts/darkswarm/services/credit_cards.js.coffee @@ -5,11 +5,15 @@ Darkswarm.factory 'CreditCards', ($http, $filter, savedCreditCards, Messages)-> add: (card) -> @saved.push card - setDefault: (card) => - card.is_default = true - for othercard in @saved when othercard != card - othercard.is_default = false - $http.put("/credit_cards/#{card.id}", is_default: true).then (data) -> - Messages.success(t('js.default_card_updated')) - , (response) -> - Messages.flash(response.data.flash) + confirmSetDefault: (card, event) => + if confirm t("js.default_card_voids_auth") + card.is_default = true + for othercard in @saved when othercard != card + othercard.is_default = false + $http.put("/credit_cards/#{card.id}", is_default: true).then (data) -> + Messages.success(t('js.default_card_updated')) + , (response) -> + Messages.flash(response.data.flash) + else + event.preventDefault() + return false diff --git a/app/views/spree/users/_saved_cards.html.haml b/app/views/spree/users/_saved_cards.html.haml index d37d6c6a86..6cb9fe3682 100644 --- a/app/views/spree/users/_saved_cards.html.haml +++ b/app/views/spree/users/_saved_cards.html.haml @@ -10,7 +10,7 @@ %td.number{ ng: { bind: '::card.number' } } %td.expiry{ ng: { bind: '::card.expiry' } } %td.is-default - %input{ type: 'radio', name: 'default_card', ng: { model: 'card.is_default', change: 'setDefault(card)', value: "true"} } + %input{ type: 'radio', name: 'default_card', ng: { model: 'card.is_default', click: 'confirmSetDefault(card, $event)', value: "true"} } %td.actions %a{"rel" => "nofollow", "data-method" => "delete", "ng-href" => "{{card.delete_link}}" } = t(:delete) diff --git a/config/locales/en.yml b/config/locales/en.yml index ef7599c32d..d7e6f9bc8b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2525,6 +2525,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using resolve_errors: Please resolve the following errors more_items: "+ %{count} More" default_card_updated: Default Card Updated + default_card_voids_auth: Changing your default card will remove shops' existing authorizations to charge it. You can re-authorize shops after updating the default card. Do you wish to change the default card?" cart: add_to_cart_failed: > There was a problem adding this product to the cart.