16 lines
755 B
TypeScript
16 lines
755 B
TypeScript
|
|
// 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 })
|
||
|
|
})
|
||
|
|
})
|