diff options
| author | ertopogo <erwin.t.pombett@gmail.com> | 2026-02-01 02:49:28 +0100 |
|---|---|---|
| committer | ertopogo <erwin.t.pombett@gmail.com> | 2026-02-01 02:49:28 +0100 |
| commit | e704383cb20e7016794ccc793eda057a609be835 (patch) | |
| tree | c4a909978dadd9d6315e65e588a39fedaa4d1e47 /storefront/lib | |
| parent | b034acb10960a404262602920cb07e63455f7dc3 (diff) | |
ajout de cart pour les commandes
Diffstat (limited to 'storefront/lib')
| -rw-r--r-- | storefront/lib/format.js | 11 | ||||
| -rw-r--r-- | storefront/lib/storefront.js | 66 |
2 files changed, 77 insertions, 0 deletions
diff --git a/storefront/lib/format.js b/storefront/lib/format.js new file mode 100644 index 0000000..2f44c2e --- /dev/null +++ b/storefront/lib/format.js @@ -0,0 +1,11 @@ +export const formatAmount = (amount, currencyCode = "EUR") => { + if (typeof amount !== "number") { + return "" + } + + const normalizedCurrency = currencyCode.toUpperCase() + return new Intl.NumberFormat("fr-FR", { + style: "currency", + currency: normalizedCurrency, + }).format(amount / 100) +} diff --git a/storefront/lib/storefront.js b/storefront/lib/storefront.js new file mode 100644 index 0000000..b6433a9 --- /dev/null +++ b/storefront/lib/storefront.js @@ -0,0 +1,66 @@ +export const cartStorageKey = "lsb_cart_id" +export const tokenStorageKey = "lsb_customer_token" + +export const getStoredCartId = () => { + if (typeof window === "undefined") { + return null + } + return window.localStorage.getItem(cartStorageKey) +} + +export const setStoredCartId = (cartId) => { + if (typeof window === "undefined") { + return + } + window.localStorage.setItem(cartStorageKey, cartId) +} + +export const clearStoredCartId = () => { + if (typeof window === "undefined") { + return + } + window.localStorage.removeItem(cartStorageKey) +} + +export const getStoredToken = () => { + if (typeof window === "undefined") { + return null + } + return window.localStorage.getItem(tokenStorageKey) +} + +export const setStoredToken = (token) => { + if (typeof window === "undefined") { + return + } + window.localStorage.setItem(tokenStorageKey, token) +} + +export const clearStoredToken = () => { + if (typeof window === "undefined") { + return + } + window.localStorage.removeItem(tokenStorageKey) +} + +export const ensureCart = async (client) => { + const storedCartId = getStoredCartId() + + if (storedCartId) { + try { + const { cart } = await client.carts.retrieve(storedCartId) + return cart + } catch (error) { + clearStoredCartId() + } + } + + const { regions } = await client.regions.list() + if (!regions?.length) { + throw new Error("Aucune région disponible pour créer un panier.") + } + + const { cart } = await client.carts.create({ region_id: regions[0].id }) + setStoredCartId(cart.id) + return cart +} |
