site-panzai/plugins/cart.client.ts

16 lines
755 B
TypeScript
Raw Normal View History

2026-11-13 13:57:04 +01:00
// Sauvegarde le panier dans le navigateur (pour ne pas le perdre en rechargeant la page).
// Chargé après l'hydratation pour éviter les écarts entre rendu serveur et client.
export default defineNuxtPlugin((nuxtApp) => {
const { lines, mode } = useCart()
nuxtApp.hook('app:mounted', () => {
try {
const saved = JSON.parse(localStorage.getItem('panzai-cart') || 'null')
if (saved?.lines?.length && !lines.value.length) lines.value = saved.lines
if (saved?.mode) mode.value = saved.mode
} catch { /* stockage indisponible */ }
watch([lines, mode], () => {
try { localStorage.setItem('panzai-cart', JSON.stringify({ lines: lines.value, mode: mode.value })) } catch { /* ignore */ }
}, { deep: true })
})
})