From 27fdc6b3aef0bcb407232ea1e87fb95b190d8345 Mon Sep 17 00:00:00 2001 From: Olexii Korshenko <okorshenko@ebay.com> Date: Thu, 2 Jul 2015 16:20:40 +0300 Subject: [PATCH] MAGETWO-39501: Resolve checkout behavior for expired session --- .../view/frontend/web/js/action/get-totals.js | 7 +++--- .../frontend/web/js/action/place-order.js | 7 +++--- .../web/js/action/set-payment-information.js | 7 +++--- .../frontend/web/js/model/error-processor.js | 24 +++++++++++++++++++ .../customer-address.js | 9 ++++--- .../shipping-rate-processor/new-address.js | 7 +++--- .../model/shipping-save-processor/default.js | 7 +++--- .../view/frontend/web/js/model/customer.js | 3 +-- .../frontend/web/js/action/gift-options.js | 6 ++--- .../frontend/web/js/action/cancel-coupon.js | 9 ++++--- .../frontend/web/js/action/set-coupon-code.js | 9 ++++--- 11 files changed, 55 insertions(+), 40 deletions(-) create mode 100644 app/code/Magento/Checkout/view/frontend/web/js/model/error-processor.js diff --git a/app/code/Magento/Checkout/view/frontend/web/js/action/get-totals.js b/app/code/Magento/Checkout/view/frontend/web/js/action/get-totals.js index 57524a7cb40..89bfd1342e9 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/action/get-totals.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/action/get-totals.js @@ -9,11 +9,11 @@ define( 'jquery', '../model/quote', 'Magento_Checkout/js/model/resource-url-manager', - 'Magento_Ui/js/model/messageList', + 'Magento_Checkout/js/model/error-processor', 'mage/storage', 'Magento_Checkout/js/model/totals' ], - function ($, quote, resourceUrlManager, messageList, storage, totals) { + function ($, quote, resourceUrlManager, errorProcessor, storage, totals) { "use strict"; return function (callbacks, deferred) { deferred = deferred || $.Deferred(); @@ -36,9 +36,8 @@ define( ).error( function (response) { totals.isLoading(false); - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); deferred.reject(); + errorProcessor.process(response); } ); diff --git a/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js b/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js index eabe01078de..e68d89eebda 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js @@ -8,11 +8,11 @@ define( 'Magento_Checkout/js/model/url-builder', 'mage/storage', 'mage/url', - 'Magento_Ui/js/model/messageList', + 'Magento_Checkout/js/model/error-processor', 'Magento_Customer/js/model/customer', 'underscore' ], - function (quote, urlBuilder, storage, url, messageList, customer, _) { + function (quote, urlBuilder, storage, url, errorProcessor, customer, _) { 'use strict'; return function (paymentData, redirectOnSuccess) { @@ -50,8 +50,7 @@ define( } ).fail( function (response) { - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); + errorProcessor.process(response); } ); }; diff --git a/app/code/Magento/Checkout/view/frontend/web/js/action/set-payment-information.js b/app/code/Magento/Checkout/view/frontend/web/js/action/set-payment-information.js index 4f1167970a4..a2ba6ecb34c 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/action/set-payment-information.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/action/set-payment-information.js @@ -7,10 +7,10 @@ define( 'Magento_Checkout/js/model/quote', 'Magento_Checkout/js/model/url-builder', 'mage/storage', - 'Magento_Ui/js/model/messageList', + 'Magento_Checkout/js/model/error-processor', 'Magento_Customer/js/model/customer' ], - function (quote, urlBuilder, storage, messageList, customer) { + function (quote, urlBuilder, storage, errorProcessor, customer) { 'use strict'; return function () { @@ -47,8 +47,7 @@ define( } ).fail( function (response) { - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); + errorProcessor.process(response); } ); }; diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/error-processor.js b/app/code/Magento/Checkout/view/frontend/web/js/model/error-processor.js new file mode 100644 index 00000000000..85af889cf2b --- /dev/null +++ b/app/code/Magento/Checkout/view/frontend/web/js/model/error-processor.js @@ -0,0 +1,24 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +define( + [ + 'mage/url', + 'Magento_Ui/js/model/messageList' + ], + function (url, messageList) { + 'use strict'; + + return { + process: function (response) { + if (response.status == 401) { + window.location.replace(url.build('customer/account/login/')); + } else { + var error = JSON.parse(response.responseText); + messageList.addErrorMessage(error); + } + } + }; + } +); diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/customer-address.js b/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/customer-address.js index 068891a5286..19d7575249f 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/customer-address.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/customer-address.js @@ -10,9 +10,9 @@ define( 'mage/storage', 'Magento_Checkout/js/model/shipping-service', 'Magento_Checkout/js/model/shipping-rate-registry', - 'Magento_Ui/js/model/messageList' + 'Magento_Checkout/js/model/error-processor' ], - function (resourceUrlManager, quote, storage, shippingService, rateRegistry, messageList) { + function (resourceUrlManager, quote, storage, shippingService, rateRegistry, errorProcessor) { "use strict"; return { getRates: function(address) { @@ -35,9 +35,8 @@ define( ).fail( function(response) { - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); - shippingService.setShippingRates([]) + shippingService.setShippingRates([]); + errorProcessor.process(response); } ).always( function () { diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/new-address.js b/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/new-address.js index db5052ca0c3..7c0f201cd0a 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/new-address.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-rate-processor/new-address.js @@ -9,9 +9,9 @@ define( 'mage/storage', 'Magento_Checkout/js/model/shipping-service', 'Magento_Checkout/js/model/shipping-rate-registry', - 'Magento_Ui/js/model/messageList' + 'Magento_Checkout/js/model/error-processor' ], - function (resourceUrlManager, quote, storage, shippingService, rateRegistry, messageList) { + function (resourceUrlManager, quote, storage, shippingService, rateRegistry, errorProcessor) { 'use strict'; return { @@ -45,9 +45,8 @@ define( } ).fail( function (response) { - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); shippingService.setShippingRates([]); + errorProcessor.process(response); } ).always( function () { diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-save-processor/default.js b/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-save-processor/default.js index 7233d429dc0..e9e63e28077 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-save-processor/default.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/model/shipping-save-processor/default.js @@ -11,9 +11,9 @@ define( 'mage/storage', 'Magento_Checkout/js/model/payment-service', 'Magento_Checkout/js/model/payment/method-converter', - 'Magento_Ui/js/model/messageList' + 'Magento_Checkout/js/model/error-processor' ], - function (ko, quote, resourceUrlManager, storage, paymentService, methodConverter, messageList) { + function (ko, quote, resourceUrlManager, storage, paymentService, methodConverter, errorProcessor) { 'use strict'; return { @@ -36,8 +36,7 @@ define( } ).fail( function (response) { - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); + errorProcessor.process(response); } ); } diff --git a/app/code/Magento/Customer/view/frontend/web/js/model/customer.js b/app/code/Magento/Customer/view/frontend/web/js/model/customer.js index 25654444d6c..c6a87925dea 100644 --- a/app/code/Magento/Customer/view/frontend/web/js/model/customer.js +++ b/app/code/Magento/Customer/view/frontend/web/js/model/customer.js @@ -8,10 +8,9 @@ define( 'jquery', 'ko', 'underscore', - 'mage/storage', './address-list' ], - function($, ko, _, storage, addressList) { + function($, ko, _, addressList) { "use strict"; var isLoggedIn = ko.observable(window.isCustomerLoggedIn), customerData = {}; diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/action/gift-options.js b/app/code/Magento/GiftMessage/view/frontend/web/js/action/gift-options.js index 51e72540458..29f9240dec2 100644 --- a/app/code/Magento/GiftMessage/view/frontend/web/js/action/gift-options.js +++ b/app/code/Magento/GiftMessage/view/frontend/web/js/action/gift-options.js @@ -8,9 +8,10 @@ define( '../model/url-builder', 'mage/storage', 'Magento_Ui/js/model/messageList', + 'Magento_Checkout/js/model/error-processor', 'mage/url' ], - function(urlBuilder, storage, messageList, url) { + function(urlBuilder, storage, messageList, errorProcessor, url) { "use strict"; return function(giftMessage, remove) { url.setBaseUrl(giftMessage.getConfigValue('baseUrl')); @@ -48,8 +49,7 @@ define( } ).fail( function(response) { - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); + errorProcessor.process(response); } ); }; diff --git a/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js b/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js index 80a6488fb28..8e52ec04063 100644 --- a/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js +++ b/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js @@ -14,11 +14,11 @@ define( 'Magento_Checkout/js/model/quote', 'Magento_Checkout/js/model/resource-url-manager', 'Magento_Checkout/js/model/payment-service', - 'Magento_Ui/js/model/messageList', + 'Magento_Checkout/js/model/error-processor', 'mage/storage', 'Magento_Checkout/js/action/get-totals' ], - function (ko, $, quote, urlManager, paymentService, messageList, storage, getTotalsAction) { + function (ko, $, quote, urlManager, paymentService, errorProcessor, storage, getTotalsAction) { 'use strict'; return function (isApplied, isLoading) { var quoteId = quote.getQuoteId(); @@ -39,11 +39,10 @@ define( ); }); } - ).error( + ).fail( function (response) { isLoading(false); - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); + errorProcessor.process(response); } ); }; diff --git a/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js b/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js index a76500e4517..f723e038136 100644 --- a/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js +++ b/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js @@ -14,11 +14,11 @@ define( 'Magento_Checkout/js/model/quote', 'Magento_Checkout/js/model/resource-url-manager', 'Magento_Checkout/js/model/payment-service', - 'Magento_Ui/js/model/messageList', + 'Magento_Checkout/js/model/error-processor', 'mage/storage', 'Magento_Checkout/js/action/get-totals' ], - function (ko, $, quote, urlManager, paymentService, messageList, storage, getTotalsAction) { + function (ko, $, quote, urlManager, paymentService, errorProcessor, storage, getTotalsAction) { 'use strict'; return function (couponCode, isApplied, isLoading) { var quoteId = quote.getQuoteId(); @@ -42,11 +42,10 @@ define( }); } } - ).error( + ).fail( function (response) { isLoading(false); - var error = JSON.parse(response.responseText); - messageList.addErrorMessage(error); + errorProcessor.process(response); } ); }; -- GitLab