diff --git a/eboutic/static/bundled/eboutic/eboutic-index.ts b/eboutic/static/bundled/eboutic/eboutic-index.ts index f31e5088..56597387 100644 --- a/eboutic/static/bundled/eboutic/eboutic-index.ts +++ b/eboutic/static/bundled/eboutic/eboutic-index.ts @@ -9,7 +9,7 @@ interface BasketItem { } document.addEventListener("alpine:init", () => { - Alpine.data("basket", () => ({ + Alpine.data("basket", (lastPurchaseTime?: number) => ({ basket: [] as BasketItem[], init() { @@ -18,6 +18,16 @@ document.addEventListener("alpine:init", () => { this.saveBasket(); }); + // Invalidate basket if a purchase was made + if (lastPurchaseTime !== null && localStorage.basketTimestamp !== undefined) { + if ( + new Date(lastPurchaseTime) >= + new Date(Number.parseInt(localStorage.basketTimestamp)) + ) { + this.basket = []; + } + } + // It's quite tricky to manually apply attributes to the management part // of a formset so we dynamically apply it here this.$refs.basketManagementForm @@ -38,6 +48,7 @@ document.addEventListener("alpine:init", () => { saveBasket() { localStorage.basket = JSON.stringify(this.basket); + localStorage.basketTimestamp = Date.now(); }, /** diff --git a/eboutic/templates/eboutic/eboutic_main.jinja b/eboutic/templates/eboutic/eboutic_main.jinja index 826e78e3..bca15fa2 100644 --- a/eboutic/templates/eboutic/eboutic_main.jinja +++ b/eboutic/templates/eboutic/eboutic_main.jinja @@ -21,7 +21,7 @@ {% block content %}