Squash merge remove-dangling-bits into market-implementation-squashed

This commit is contained in:
padreug 2025-09-04 22:26:38 +02:00
parent 4bc15cfa2f
commit 2f0024478d
17 changed files with 569 additions and 859 deletions

View file

@ -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
}
})