chore: orders uffff

This commit is contained in:
Vlad Stan 2023-07-10 18:04:48 +03:00
parent 1f467c20ed
commit 9c19dc8ee1
2 changed files with 37 additions and 7 deletions

View file

@ -41,7 +41,7 @@
<strong>Email:</strong> <strong>Email:</strong>
</div> </div>
<div class="col-xs-12 col-sm-12 col-md-10"> <div class="col-xs-12 col-sm-12 col-md-10">
<q-input v-model.trim="contactData.address" outlined label="Email (optional)"></q-input> <q-input v-model.trim="contactData.email" outlined label="Email (optional)"></q-input>
</div> </div>
</div> </div>
@ -50,7 +50,7 @@
<strong>Message:</strong> <strong>Message:</strong>
</div> </div>
<div class="col-xs-12 col-sm-12 col-md-10"> <div class="col-xs-12 col-sm-12 col-md-10">
<q-input v-model.trim="contactData.address" outlined type="textarea" rows="3" <q-input v-model.trim="contactData.message" outlined type="textarea" rows="3"
label="Message to Merchant (optional)"></q-input> label="Message to Merchant (optional)"></q-input>
</div> </div>
</div> </div>

View file

@ -650,6 +650,7 @@ const market = async () => {
event.sig = await NostrTools.signEvent(event, this.account.privkey) event.sig = await NostrTools.signEvent(event, this.account.privkey)
this.sendOrderEvent(event) this.sendOrderEvent(event)
this.persistOrderUpdate(this.checkoutStall.pubkey, order)
}, },
sendOrderEvent(event) { sendOrderEvent(event) {
@ -715,8 +716,10 @@ const market = async () => {
const jsonData = JSON.parse(plainText) const jsonData = JSON.parse(plainText)
if (jsonData.type === 1) { if (jsonData.type === 1) {
this.handlePaymentRequest(jsonData) this.handlePaymentRequest(jsonData)
this.persistOrderUpdate(event.pubkey, jsonData)
} else if (jsonData.type === 2) { } else if (jsonData.type === 2) {
this.handleOrderStatusUpdate(jsonData) this.handleOrderStatusUpdate(jsonData)
this.persistOrderUpdate(event.pubkey, jsonData)
} }
} catch (e) { } catch (e) {
console.warn('Unable to handle incomming DM', e) console.warn('Unable to handle incomming DM', e)
@ -724,13 +727,10 @@ const market = async () => {
}, },
handlePaymentRequest(json) { handlePaymentRequest(json) {
console.log('### handlePaymentRequest', json, this.activeOrderId)
if (!json.payment_options?.length) { if (!json.payment_options?.length) {
this.qrCodeDialog.data.message = json.message || 'Unexpected error' this.qrCodeDialog.data.message = json.message || 'Unexpected error'
return return
} }
console.log('### ')
if (json.id && (json.id !== this.activeOrderId)) { if (json.id && (json.id !== this.activeOrderId)) {
// not for active order, store somewehre else // not for active order, store somewehre else
return return
@ -751,15 +751,19 @@ const market = async () => {
this.qrCodeDialog.dismissMsg() this.qrCodeDialog.dismissMsg()
this.qrCodeDialog.show = false 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({ this.$q.notify({
type: 'positive', type: 'positive',
message: message message: message,
caption: jsonData.message || ''
}) })
}, },
persistDMEvent(event) { persistDMEvent(event) {
const dms = this.$q.localStorage.getItem(`nostrmarket.dm.${event.pubkey}`) || { events: [], lastCreatedAt: 0 } 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.push(event)
dms.events.sort((a, b) => a - b) dms.events.sort((a, b) => a - b)
dms.lastCreatedAt = dms.events[dms.events.length - 1].created_at 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}`) const dms = this.$q.localStorage.getItem(`nostrmarket.dm.${pubkey}`)
if (!dms) return 0 if (!dms) return 0
return dms.lastCreatedAt 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)
} }
} }