From 303afcfab447f275438eb72fd999eb89ae6845f7 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 7 Jul 2023 15:02:51 +0300 Subject: [PATCH] feat: add shipping cost to cart --- .../shopping-cart-checkout.html | 62 +++++-------------- .../shopping-cart-checkout.js | 25 +++++++- static/js/market.js | 8 ++- templates/nostrmarket/market.html | 4 +- 4 files changed, 46 insertions(+), 53 deletions(-) diff --git a/static/components/shopping-cart-checkout/shopping-cart-checkout.html b/static/components/shopping-cart-checkout/shopping-cart-checkout.html index cfebfdc..4b438fb 100644 --- a/static/components/shopping-cart-checkout/shopping-cart-checkout.html +++ b/static/components/shopping-cart-checkout/shopping-cart-checkout.html @@ -32,11 +32,10 @@ Subtotal:
- + {{formatCurrency(cartTotal, stall.currency)}}
- {{formatCurrency(cartTotal, - cart.products[0]?.currency)}} +
@@ -44,11 +43,21 @@ Shipping:
- + {{formatCurrency(shippingZone.cost, stall.currency)}}
- 00.00 + + + + + + + +
+
@@ -56,51 +65,12 @@ Total:
- + {{formatCurrency(cartTotalWithShipping, stall.currency)}}
- 00.00 +
- - diff --git a/static/components/shopping-cart-checkout/shopping-cart-checkout.js b/static/components/shopping-cart-checkout/shopping-cart-checkout.js index 8a52b9a..78f14a0 100644 --- a/static/components/shopping-cart-checkout/shopping-cart-checkout.js +++ b/static/components/shopping-cart-checkout/shopping-cart-checkout.js @@ -5,10 +5,11 @@ async function shoppingCartCheckout(path) { name: 'shopping-cart-checkout', template, - props: ['cart'], + props: ['cart', 'stall'], data: function () { return { paymentMethod: 'ln', + shippingZone: null, paymentOptions: [ { label: 'Lightning Network', @@ -30,17 +31,37 @@ async function shoppingCartCheckout(path) { if (!this.cart.products?.length) return 0 return this.cart.products.reduce((t, p) => p.price + t, 0) }, + cartTotalWithShipping() { + if (!this.shippingZone) return this.cartTotal + return this.cartTotal + this.shippingZone.cost + }, + shippingZoneLabel() { + if (!this.shippingZone) { + return 'Shipping Zone' + } + const zoneName = this.shippingZone.name.substring(0, 10) + if (this.shippingZone?.name.length < 10) { + return zoneName + } + return zoneName + '...' + } }, methods: { formatCurrency: function (value, unit) { return formatCurrency(value, unit) }, + selectShippingZone: function (zone) { + this.shippingZone = zone + }, requestInvoice: function () { } }, created() { - console.log('### shoppingCartCheckout', this.cart) + console.log('### shoppingCartCheckout', this.stall) + if (this.stall.shipping?.length === 1) { + this.shippingZone = this.stall.shipping[0] + } } }) } diff --git a/static/js/market.js b/static/js/market.js index da0a2e8..c474fce 100644 --- a/static/js/market.js +++ b/static/js/market.js @@ -53,7 +53,8 @@ const market = async () => { merchants: [], shoppingCarts: [], - shoppingCartCheckout: null, + checkoutCart: null, + checkoutStall: null, activePage: 'market', @@ -611,8 +612,9 @@ const market = async () => { this.$q.localStorage.set('nostrmarket.shoppingCarts', this.shoppingCarts) }, - checkoutCart(cart) { - this.shoppingCartCheckout = cart + checkoutStallCart(cart) { + this.checkoutCart = cart + this.checkoutStall = this.stalls.find(s => s.id === cart.id) this.setActivePage('shopping-cart-checkout') } diff --git a/templates/nostrmarket/market.html b/templates/nostrmarket/market.html index d188193..347d75d 100644 --- a/templates/nostrmarket/market.html +++ b/templates/nostrmarket/market.html @@ -212,9 +212,9 @@ @remove-merchant="removeMerchant"> + @checkout-cart="checkoutStallCart"> + :cart="checkoutCart" :stall="checkoutStall">