diff --git a/static/components/shopping-cart-checkout/shopping-cart-checkout.html b/static/components/shopping-cart-checkout/shopping-cart-checkout.html index 7c0b324..c66a4ab 100644 --- a/static/components/shopping-cart-checkout/shopping-cart-checkout.html +++ b/static/components/shopping-cart-checkout/shopping-cart-checkout.html @@ -41,7 +41,7 @@ Email:
- +
@@ -50,7 +50,7 @@ Message:
-
diff --git a/static/js/market.js b/static/js/market.js index 0861e81..de715eb 100644 --- a/static/js/market.js +++ b/static/js/market.js @@ -650,6 +650,7 @@ const market = async () => { event.sig = await NostrTools.signEvent(event, this.account.privkey) this.sendOrderEvent(event) + this.persistOrderUpdate(this.checkoutStall.pubkey, order) }, sendOrderEvent(event) { @@ -715,8 +716,10 @@ const market = async () => { const jsonData = JSON.parse(plainText) if (jsonData.type === 1) { this.handlePaymentRequest(jsonData) + this.persistOrderUpdate(event.pubkey, jsonData) } else if (jsonData.type === 2) { this.handleOrderStatusUpdate(jsonData) + this.persistOrderUpdate(event.pubkey, jsonData) } } catch (e) { console.warn('Unable to handle incomming DM', e) @@ -724,13 +727,10 @@ const market = async () => { }, handlePaymentRequest(json) { - console.log('### handlePaymentRequest', json, this.activeOrderId) - if (!json.payment_options?.length) { this.qrCodeDialog.data.message = json.message || 'Unexpected error' return } - console.log('### ') if (json.id && (json.id !== this.activeOrderId)) { // not for active order, store somewehre else return @@ -751,15 +751,19 @@ const market = async () => { this.qrCodeDialog.dismissMsg() this.qrCodeDialog.show = false } - const message = jsonData.shipped ? 'Order shipped' : jsonData.paid ? 'Order paid' : 'Order updated' + const message = jsonData.shipped ? 'Order shipped' : jsonData.paid ? 'Order paid' : 'Order notification' this.$q.notify({ type: 'positive', - message: message + message: message, + caption: jsonData.message || '' }) }, persistDMEvent(event) { const dms = this.$q.localStorage.getItem(`nostrmarket.dm.${event.pubkey}`) || { events: [], lastCreatedAt: 0 } + const existingEvent = dms.events.find(e => e.id === event.id) + if (existingEvent) return + dms.events.push(event) dms.events.sort((a, b) => a - b) dms.lastCreatedAt = dms.events[dms.events.length - 1].created_at @@ -771,6 +775,32 @@ const market = async () => { const dms = this.$q.localStorage.getItem(`nostrmarket.dm.${pubkey}`) if (!dms) return 0 return dms.lastCreatedAt + }, + + persistOrderUpdate(pubkey, orderUpdate) { + console.log('### persistOrderUpdate', pubkey, orderUpdate) + const orders = this.$q.localStorage.getItem(`nostrmarket.orders.${pubkey}`) || [] + let order = orders.find(o => o.id === orderUpdate.id) + if (!order) { + orders.push({ ...orderUpdate, messages: orderUpdate.message ? [orderUpdate.message] : [] }) + this.$q.localStorage.set(`nostrmarket.orders.${pubkey}`, orders) + return + } + + if (orderUpdate.message) { + order.messages.push(orderUpdate.message) + } + + if (orderUpdate.type === 0 || orderUpdate.type === 1) { + order = { ...orderUpdate, ...order } + } else if (orderUpdate.type === 2) { + order.paid = orderUpdate.paid + order.shipped = orderUpdate.shipped + } + + orders.filter(o => o.id !== order.id).unshift(order) + + this.$q.localStorage.set(`nostrmarket.orders.${pubkey}`, orders) } }