summaryrefslogtreecommitdiff
path: root/storefront/lib
diff options
context:
space:
mode:
authorToshiro <toshiro@huitral.local>2026-02-01 03:17:06 +0100
committerToshiro <toshiro@huitral.local>2026-02-01 03:17:06 +0100
commit7579b72cba4248e1b33fae004a97c8513dfca005 (patch)
tree1f69e33aebbe880bcf52a48301a23e959ff20652 /storefront/lib
parentb7c594e72b993340bc6b70a74643506e543d3a12 (diff)
parentbc6f65dc9afa29fbb94038b1cfd5cbee2d87719c (diff)
merge:resolve conflicts
Diffstat (limited to 'storefront/lib')
-rw-r--r--storefront/lib/format.js11
-rw-r--r--storefront/lib/storefront.js66
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..9e92a8b
--- /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..ccfe1cd
--- /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
+}