Squash merge remove-dangling-bits into market-implementation-squashed
This commit is contained in:
parent
4bc15cfa2f
commit
2f0024478d
17 changed files with 569 additions and 859 deletions
|
|
@ -1,9 +1,10 @@
|
|||
import { defineStore } from 'pinia'
|
||||
import { ref, computed, readonly } from 'vue'
|
||||
import { ref, computed, readonly, watch } from 'vue'
|
||||
import { nostrOrders } from '@/composables/useNostrOrders'
|
||||
import { invoiceService } from '@/lib/services/invoiceService'
|
||||
import { paymentMonitor } from '@/lib/services/paymentMonitor'
|
||||
import { nostrmarketService } from '@/lib/services/nostrmarketService'
|
||||
import { useAuth } from '@/composables/useAuth'
|
||||
import type { LightningInvoice } from '@/lib/services/invoiceService'
|
||||
|
||||
|
||||
|
|
@ -85,6 +86,7 @@ export interface Order {
|
|||
qrCodeDataUrl?: string
|
||||
qrCodeLoading?: boolean
|
||||
qrCodeError?: string | null
|
||||
showQRCode?: boolean // Toggle QR code visibility
|
||||
}
|
||||
|
||||
export interface OrderItem {
|
||||
|
|
@ -166,6 +168,13 @@ export interface PaymentStatus {
|
|||
}
|
||||
|
||||
export const useMarketStore = defineStore('market', () => {
|
||||
const auth = useAuth()
|
||||
|
||||
// Helper function to get user-specific storage key
|
||||
const getUserStorageKey = (baseKey: string) => {
|
||||
const userPubkey = auth.currentUser?.value?.pubkey
|
||||
return userPubkey ? `${baseKey}_${userPubkey}` : baseKey
|
||||
}
|
||||
// Core market state
|
||||
const markets = ref<Market[]>([])
|
||||
const stalls = ref<Stall[]>([])
|
||||
|
|
@ -807,7 +816,9 @@ export const useMarketStore = defineStore('market', () => {
|
|||
// Persistence methods
|
||||
const saveOrdersToStorage = () => {
|
||||
try {
|
||||
localStorage.setItem('market_orders', JSON.stringify(orders.value))
|
||||
const storageKey = getUserStorageKey('market_orders')
|
||||
localStorage.setItem(storageKey, JSON.stringify(orders.value))
|
||||
console.log('Saved orders to localStorage with key:', storageKey)
|
||||
} catch (error) {
|
||||
console.warn('Failed to save orders to localStorage:', error)
|
||||
}
|
||||
|
|
@ -815,17 +826,30 @@ export const useMarketStore = defineStore('market', () => {
|
|||
|
||||
const loadOrdersFromStorage = () => {
|
||||
try {
|
||||
const stored = localStorage.getItem('market_orders')
|
||||
const storageKey = getUserStorageKey('market_orders')
|
||||
const stored = localStorage.getItem(storageKey)
|
||||
if (stored) {
|
||||
const parsedOrders = JSON.parse(stored)
|
||||
orders.value = parsedOrders
|
||||
console.log('Loaded orders from localStorage:', Object.keys(parsedOrders).length)
|
||||
console.log('Loaded orders from localStorage with key:', storageKey, 'Orders count:', Object.keys(parsedOrders).length)
|
||||
} else {
|
||||
console.log('No orders found in localStorage for key:', storageKey)
|
||||
// Clear any existing orders when switching users
|
||||
orders.value = {}
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Failed to load orders from localStorage:', error)
|
||||
// Clear orders on error
|
||||
orders.value = {}
|
||||
}
|
||||
}
|
||||
|
||||
// Clear orders when user changes
|
||||
const clearOrdersForUserChange = () => {
|
||||
orders.value = {}
|
||||
console.log('Cleared orders for user change')
|
||||
}
|
||||
|
||||
// Payment utility methods
|
||||
const calculateOrderTotal = (cart: StallCart, shippingZone?: ShippingZone) => {
|
||||
const subtotal = cart.subtotal
|
||||
|
|
@ -918,6 +942,15 @@ export const useMarketStore = defineStore('market', () => {
|
|||
// Initialize orders from localStorage
|
||||
loadOrdersFromStorage()
|
||||
|
||||
// Watch for user changes and reload orders
|
||||
watch(() => auth.currentUser?.value?.pubkey, (newPubkey, oldPubkey) => {
|
||||
if (newPubkey !== oldPubkey) {
|
||||
console.log('User changed, clearing and reloading orders. Old:', oldPubkey, 'New:', newPubkey)
|
||||
clearOrdersForUserChange()
|
||||
loadOrdersFromStorage()
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
// State
|
||||
markets: readonly(markets),
|
||||
|
|
@ -997,6 +1030,7 @@ export const useMarketStore = defineStore('market', () => {
|
|||
updateOrder,
|
||||
saveOrdersToStorage,
|
||||
loadOrdersFromStorage,
|
||||
clearOrdersForUserChange,
|
||||
publishToNostrmarket
|
||||
}
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue