mirror of
https://github.com/ae-utbm/sith.git
synced 2026-05-19 15:30:54 +00:00
feat: versionedLocalStorage
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
export {};
|
||||
import { versionedLocalStorage } from "#core:core/cache";
|
||||
|
||||
interface BasketItem {
|
||||
priceId: number;
|
||||
@@ -8,6 +8,7 @@ interface BasketItem {
|
||||
}
|
||||
|
||||
const BASKET_CACHE_KEY = "basket";
|
||||
const BASKET_CACHE_VERSION = 1;
|
||||
|
||||
document.addEventListener("alpine:init", () => {
|
||||
Alpine.data("basket", (lastPurchaseTime?: number) => ({
|
||||
@@ -33,18 +34,16 @@ document.addEventListener("alpine:init", () => {
|
||||
},
|
||||
|
||||
loadBasket(): BasketItem[] {
|
||||
if (localStorage.getItem(BASKET_CACHE_KEY) === null) {
|
||||
return [];
|
||||
}
|
||||
try {
|
||||
return JSON.parse(localStorage.getItem(BASKET_CACHE_KEY));
|
||||
} catch (_err) {
|
||||
return [];
|
||||
}
|
||||
const cached = versionedLocalStorage.getItem<BasketItem[]>(BASKET_CACHE_KEY, {
|
||||
version: BASKET_CACHE_VERSION,
|
||||
});
|
||||
return cached ?? [];
|
||||
},
|
||||
|
||||
saveBasket() {
|
||||
localStorage.setItem(BASKET_CACHE_KEY, JSON.stringify(this.basket));
|
||||
versionedLocalStorage.setItem(BASKET_CACHE_KEY, this.basket, {
|
||||
version: BASKET_CACHE_VERSION,
|
||||
});
|
||||
localStorage.setItem("basketTimestamp", Date.now().toString());
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user