diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index 2f1f7e64510..af03a546496 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -80,6 +80,9 @@ publicWidget.registry.websiteSaleCartLink = publicWidget.Widget.extend({ $('.popover').on('mouseleave', function () { self.$el.trigger('mouseleave'); }); + self.cartQty = +$(data).find('.o_wsale_cart_quantity').text(); + sessionStorage.setItem('website_sale_cart_quantity', self.cartQty); + self._updateCartQuantityText(); }); }, 300); }, @@ -129,10 +132,16 @@ publicWidget.registry.websiteSaleCartLink = publicWidget.Widget.extend({ /** * @private */ - _updateCartQuantityValue() { - return this._rpc({route: "/shop/cart/quantity"}).then((cartQty) => { - this.cartQty = cartQty; - }); + async _updateCartQuantityValue() { + if ('website_sale_cart_quantity' in sessionStorage) { + this.cartQty = sessionStorage.getItem('website_sale_cart_quantity'); + } + if (this.el.querySelector('.my_cart_quantity').innerText != this.cartQty) { + return this._rpc({route: "/shop/cart/quantity"}).then((cartQty) => { + this.cartQty = cartQty; + sessionStorage.setItem('website_sale_cart_quantity', this.cartQty); + }); + } }, /** * @private @@ -359,6 +368,7 @@ publicWidget.registry.WebsiteSale = publicWidget.Widget.extend(VariantMixin, car $input.trigger('change'); return; } + sessionStorage.setItem('website_sale_cart_quantity', data.cart_quantity); if (!data.cart_quantity) { return window.location = '/shop/cart'; } diff --git a/addons/website_sale/static/src/js/website_sale_utils.js b/addons/website_sale/static/src/js/website_sale_utils.js index e5139a21910..af2e96aff98 100644 --- a/addons/website_sale/static/src/js/website_sale_utils.js +++ b/addons/website_sale/static/src/js/website_sale_utils.js @@ -34,6 +34,7 @@ const cartHandlerMixin = { route: "/shop/cart/update_json", params: params, }).then(async data => { + sessionStorage.setItem('website_sale_cart_quantity', data.cart_quantity); if (data.cart_quantity && (data.cart_quantity !== parseInt($(".my_cart_quantity").text()))) { await animateClone($('header .o_wsale_my_cart').first(), this.$itemImgContainer, 25, 40); updateCartNavBar(data); diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 31a8af23e08..57c1d43a7ca 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -1268,8 +1268,8 @@ - View Cart ( item(s)) - + View Cart ( item(s)) + diff --git a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js index 932ae557cd0..0c43812b4b5 100644 --- a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js +++ b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js @@ -116,6 +116,7 @@ publicWidget.registry.WebsiteSale.include({ const $quantity = $(".my_cart_quantity"); $quantity.parent().parent().removeClass('d-none'); $quantity.text(quantity).hide().fadeIn(600); + sessionStorage.setItem('website_sale_cart_quantity', quantity); }); }); },